日本語入力できなくなって
超ムカつくんですけど!!そんなときは
Shift + 無変換(スペースキーの左隣)を入力すると、日本語入力できるようになりました。
Shift + 無変換(スペースキーの左隣)を入力すると、日本語入力できるようになりました。
my_www: type: php my_database: type: mysqlmy_www や my_database は好きな文字列を指定できます。
dotcloud push helloworld # upload ~/work/dotcloud/helloworld ssh://dotcloud@uploader.dotcloud.com:443/helloworld # rsync building file list ... done ./ (中略) Deployment finished. Your application is available at the following URLs my_www: http://helloworld1-windblue.dotcloud.com/ www: http://helloworld-windblue.dotcloud.com/
<?php // environment.json ファイルから接続に必要な情報を取得 $filepath = $_SERVER['HOME'].'/environment.json'; $env = json_decode(file_get_contents($filepath), true); foreach ($env as $key => $value) { print_r($key . "=" . $value . "<br />"); }
dotcloud ssh helloworld.my_wwwhelloworld.my_wwwは <作ったサービス名>.<dotcloud.ymlに書いたキー です。
/home/dotcloud/になります。
$ ls code current environment.json environment.yml php-env revisions rsync-1345870675271
<?php // environment.json ファイルから接続に必要な情報を取得 $filepath = $_SERVER['HOME'].'/environment.json'; // 'DOTCLOUD_MY_DATABASE_MYSQL_MYSQL_XXX' というキーでMySQL関連のデータが入っている $host = $env['DOTCLOUD_MY_DATABASE_MYSQL_HOST']; $user = $env['DOTCLOUD_MY_DATABASE_MYSQL_LOGIN']; $pass = $env['DOTCLOUD_MY_DATABASE_MYSQL_PASSWORD']; $port = $env['DOTCLOUD_MY_DATABASE_MYSQL_PORT']; //前回のエントリで作成したデータベース「nujabes」 $dbName = 'nujabes'; //mysqliオブジェクト作成 $mysqli = new mysqli($host, $user, $pass, $dbName, $port);
//前回のエントリで作成した「songs」というテーブルから全行取得するSQLを発行 $result = $mysqli->query('SELECT * FROM songs;'); //結果を取得していく $rows = array(); while ($row = mysqli_fetch_assoc($result)) { $rows[] = $row; } //実行結果を表示 print_r($rows);これで作ったページにアクセスすると、
Array ( [0] => Array ( [id] => 0 [title] => Luv (Sic) Pt. 2 ) )と表示されます。
$ mkdir helloworld $ pwd ~/work/dotcloud/helloworld
my_database: type: mysql
$ dotcloud create helloworld Created application "helloworld" using the flavor "sandbox" (Use for development, free and unlimited apps. DO NOT use for production.). This flavor cannot be changed. ** YOU HAVE CREATED A SANDBOX APPLICATION ** SANDBOX applications may not be scaled, may not use custom domains, and do not have the same performance guarantees as "live" applications. SANDBOX applications cannot be upgraded. Information about the different flavors offered can be found here: http://docs.dotcloud.com/guides/flavors/
$ dotcloud push helloworld # upload ~/work/dotcloud/helloworld ssh://dotcloud@uploader.dotcloud.com:443/helloworld # rsync building file list ... done ./ dotcloud.yml sent 148 bytes received 34 bytes 28.00 bytes/sec total size is 29 speedup is 0.16 16:31:09 ---> Deploy of "helloworld" scheduled for revision rsync-1345739468475 at 2012-08-23 16:31:09 16:31:09 ---> Building the application... 16:31:09 ---> Nothing to build 16:31:09 ---> Initializing new services... (This may take a few minutes) 16:31:09 ---> Using default scaling for service my_database (1 instance(s)). 16:31:09 [my_database.0] Initializing... 16:31:24 [my_database.0] Service initialized 16:31:25 ---> Deploy finished Deployment finished. Your application is available at the following URLs No URL found. That's ok, it means that your application does not include a webservice.
$ dotcloud run helloworld.my_database -- mysql # mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 36 Server version: 5.1.41-3ubuntu12.10-log (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>コマンド中のhelloworld.my_databaseは、<createしたサービス名>.<dotcloud.ymlに記述したMySQLのキー>に相当します。
mysql> CREATE DATABASE nujabes; Query OK, 1 row affected (0.00 sec)
mysql> use nujabes; Database changed
mysql> CREATE TABLE songs(id INT(10), title VARCHAR(64)); Query OK, 0 rows affected (0.04 sec)
mysql> INSERT INTO songs(id, title) VALUES(0, 'Luv (Sic) Pt. 2'); Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM songs; +------+-----------------+ | id | title | +------+-----------------+ | 0 | Luv (Sic) Pt. 2 | +------+-----------------+ 1 row in set (0.00 sec)
self.tableView.allowsMultipleSelectionDuringEditing = YES;とすると、編集モードのときに複数選択ができるようになります。
[self.tableView indexPathsForSelectedRows];とすると、indexPath(sectionとrowがセットになったオブジェクト)のNSArrayが取得できます。
//「選択したセルたちのindexPath」が配列のかたちで取得できる NSArray *indexPaths = [self.tableView indexPathsForSelectedRows]; //選択されたセルが含まれるセクション番号一覧を取得(値の重複はさせない) NSMutableSet *selectedUniqueSections = [NSMutableSet set]; for (NSIndexPath *tempIndexPath in indexPaths) { [selectedUniqueSections addObject:[NSNumber numberWithInteger:tempIndexPath.section]]; } //各セクション番号と、それに紐づく行番号たちをdictionary形式で取得 NSMutableDictionary *selectedSectionAndRows = [NSMutableDictionary dictionary]; for (NSNumber *selectedSection in selectedUniqueSections) { NSMutableArray *selectedRows = [NSMutableArray array]; for (NSIndexPath *indexPath in indexPaths) { if (indexPath.section == [selectedSection intValue]) { NSArray *tableDataRow = [[tableData objectAtIndex:indexPath.section] objectForKey:KEY_ROW]; NSString *selectedRowValue = [tableDataRow objectAtIndex:indexPath.row]; [selectedRows addObject:selectedRowValue]; } } [selectedSectionAndRows setObject:selectedRows forKey:selectedSection]; } //各セクション毎に、その中の行を一括で削除する for (NSNumber *section in selectedSectionAndRows) { NSInteger sectionInteger = [section intValue]; NSArray *selectedRow = [selectedSectionAndRows objectForKey:section]; [[[tableData objectAtIndex:sectionInteger] objectForKey:KEY_ROW] removeObjectsInArray:selectedRow]; }
//UITableViewの表示からも削除する [self.tableView beginUpdates]; [self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic]; [self.tableView endUpdates];
//セクション中の行が0になった場合、削除する NSMutableIndexSet *zeroRowSections = [NSMutableIndexSet indexSet]; for (NSInteger i = 0; i < [tableData count]; i++) { if ([[[tableData objectAtIndex:i] objectForKey:KEY_ROW] count] == 0) { [zeroRowSections addIndex:i]; } } //行数がゼロのセクションがあれば、そこのデータを一括削除し、表示をリロードする if ([zeroRowSections count] > 0) { [tableData removeObjectsAtIndexes:zeroRowSections]; [self.tableView reloadData]; }
rm -rf `find ./ -type d -name .svn ! -regex \.svn/. -print`