HTML5タグ★チートシート
http://www.atmarkit.co.jp/fdotnet/chushin/cheatsheet_02/cheatsheet_02.pdf
XPath チートシート
http://aoproj.web.fc2.com/xpath/XPath_cheatsheets_v2.pdf
Vimチートシート
http://www.namaraii.com/files/vim-cheatsheet.pdf
OpenCV 2.2 チートシート(C++)
http://opencv.jp/opencv-2.2/opencv_cheatsheet.pdf
WordPressチートシート
http://www.webcreatorbox.com/wp-content/themes/wcb/images/wordpress_cheatsheet3.pdf
MySQLチートシート
http://www.mysqlpracticewiki.com/files/cheat-sheet.pdf
CSSチートシート
http://www.textdrop.net/wp-content/uploads/css-cheat-sheet-v2-ja.pdf
JUnitチートシート
http://image.gihyo.co.jp/assets/files/book/2012/978-4-7741-5377-3/download/junitbook_cheatsheet.pdf
Mac OS X チートシート
http://www.senote.org/dl/cheatsheet/MacOSX-CheatSheet-2in1p.pdf
物流用語チートシート
http://www.boldweb.jp/work/cs/butsuryu-cheat-sheet-v0.1.pdf
2013年12月3日火曜日
2013年12月2日月曜日
iBatisでSQLのWHEREでINキーワードを使うには
iBatisでSQLのWHEREでINキーワードを使うには、parameterClassにListを使用する。
sqlMap
<select id="select-test" resultMap="MyTableResult" parameterClass="list"> select * from my_table where col_1 in <iterate open="(" close=")" conjunction=","> #[]# </iterate> </select>Java
Listlist = new ArrayList (3); list.add("1"); list.add("2"); list.add("3"); List objs = sqlMapClient.queryForList("select-test",list);
2013年11月28日木曜日
Excelのセル内のテキストをもとにShapeを作り、グループ化するマクロ
Excelで作成したDBのテーブル定義書などをもとにER図をExcelのShapeを使って作成するのを補助するマクロです。
カラム名を選択した状態でこのマクロを実行すると、各セル単位でShapeを作成し、グループ化します。
ER図作成時にコネクタを任意のカラムに結合したのに、レイアウトの都合からShapeを移動するとコネクタの位置がずれるので作成しました。
Sub CellTextToShape() ' ' ER図作成補助 Macro ' 選択された範囲の文字列をテキストとするShapeを作成する ' ' Keyboard Shortcut: Ctrl+q ' Set xColumns = New Collection '外枠 px = Selection.Left - 5 py = Selection.Top - 5 pw = Selection(1).Width + 10 ph = Selection(1).Height * Selection.Count + 10 Dim xParent As Shape Set xParent = ActiveSheet.Shapes.AddShape(Type:=msoShapeRectangle, Left:=px, Top:=py, Width:=pw, Height:=ph) xParent.Line.ForeColor.RGB = RGB(0, 0, 0) xParent.Fill.ForeColor.RGB = RGB(255, 255, 255) xColumns.Add xParent '中身 For i = Selection(1).Row To Selection(Selection.Count).Row nCol = Selection(1).Column nRow = Selection(1).Row x = Cells(i, nCol).Left y = Cells(i, nCol).Top w = Cells(i, nCol).Width h = Cells(i, nCol).Height txt = Cells(i, nCol).Value s = Cells(i, nCol).Font.Size Dim xShape As Shape Set xShape = ActiveSheet.Shapes.AddShape(Type:=msoShapeRectangle, Left:=x, Top:=y, Width:=w, Height:=h) xShape.TextFrame.Characters.Text = txt xShape.TextFrame.Characters.Font.Color = vbBlack xShape.TextFrame.Characters.Font.Size = s xShape.TextFrame.HorizontalAlignment = xlHAlignLeft xShape.TextFrame.MarginBottom = 0 xShape.TextFrame.MarginTop = 0 xShape.Fill.Visible = False xShape.Line.Visible = False xShape.Name = txt xColumns.Add xShape Debug.Print (txt & vbTab & w & vbTab & h) 'ActiveSheet.Shapes(txt).TextFrame.Characters.Text = txt Next For Each xShape In xColumns xShape.Select Replace:=False Next Selection.Group End Sub
2013年11月27日水曜日
マイクロソフト純正の仮想デスクトップマネージャ
デフォルトの設定でAlt+1~4で4つのデスクトップを使い分けられて便利。
動作も軽い。
http://technet.microsoft.com/en-in/sysinternals/cc817881(en-us).aspx
デフォルトの設定でAlt+1~4で4つのデスクトップを使い分けられて便利。
動作も軽い。
http://technet.microsoft.com/en-in/sysinternals/cc817881(en-us).aspx
サクラエディタのSQL崩しマクロ
サクラエディタでSQL崩しをするためのマクロ。
SQL崩し.mac として保存。
[設定]→[共通設定]→マクロタブを選択。
[名前]にS「SQL崩し」、[File]に保存したマクロファイルを指定して[設定]ボタンをクリックする。
//キーボードマクロのファイル //S_SelectAll(0); // すべて選択 //S_ToUpper(0); // 大文字 S _ReplaceAll('\\t', ' ', 156); // タブをスペースに S_ReDraw(0); // 再描画 S_ReplaceAll('[ ]+', ' ', 156); // 連続スペースをまとめる S_ReDraw(0); // 再描画 S_ReplaceAll('\\r', '\\n', 156); // キャリッジリターン削除 S_ReDraw(0); // 再描画 S_ReplaceAll('^\\n', '', 156); // 空行削除 S_ReDraw(0); // 再描画 S_GoFileTop(0); // ファイルの先頭に移動 S_ReplaceAll('^ ', '', 28); // 行頭のスペース削除 S_ReDraw(0); // 再描画 S_GoFileTop(0); // ファイルの先頭に移動 S_ReplaceAll('$', ' ', 28); // 行末にスペース追加 S_ReDraw(0); // 再描画 S_ReplaceAll('SELECT ', 'SELECT \\n', 28); // S_ReDraw(0); // 再描画 S_ReplaceAll('INSERT ', 'INSERT \\n', 28); // S_ReDraw(0); // 再描画 S_ReplaceAll('UPDATE ', 'UPDATE \\n', 28); // S_ReDraw(0); // 再描画 S_ReplaceAll('DELETE ', 'DELETE \\n', 28); // S_ReDraw(0); // 再描画 S_ReplaceAll('FROM ', 'FROM \\n', 28); // S_ReDraw(0); // 再描画 S_ReplaceAll('WHERE ', 'WHERE \\n', 28); // S_ReDraw(0); // 再描画 S_ReplaceAll('ORDER BY ', 'ORDER BY \\n', 28); // S_ReDraw(0); // 再描画 S_ReplaceAll('GROUP BY ', 'GROUP BY \\n', 28); // S_ReDraw(0); // 再描画 S_ReplaceAll('^', ' ', 28); // 行頭に4つスペース S_ReDraw(0); // 再描画 S_GoFileTop(0); // ファイルの先頭に移動 S_ReplaceAll(' SELECT ', 'SELECT', 28); // SELECTのインデント解除 S_ReDraw(0); // 再描画 S_ReplaceAll(' INSERT ', 'INSERT', 28); // INSERTのインデント解除 S_ReDraw(0); // 再描画 S_ReplaceAll(' UPDATE ', 'UPDATE', 28); // UPDATEのインデント解除 S_ReDraw(0); // 再描画 S_ReplaceAll(' DELETE ', 'DELETE', 28); // DELETEのインデント解除 S_ReDraw(0); // 再描画 S_ReplaceAll(' FROM ', 'FROM ', 28); // FROMのインデント解除 S_ReDraw(0); // 再描画 S_ReplaceAll(' WHERE ', 'WHERE', 28); // WHEREのインデント解除 S_ReDraw(0); // 再描画 S_ReplaceAll(' ORDER BY ', 'ORDER BY ', 28); // ORDER BYのインデント解除 S_ReDraw(0); // 再描画 S_ReplaceAll(' GROUP BY ', 'GROUP BY ', 28); // GROUP BYのインデント解除 S_ReDraw(0); // 再描画 S_ReplaceAll('\\Z ON ', ' ON ', 28); // JOINの途中で折り返さない S_ReDraw(0); // 再描画
2013年11月20日水曜日
Androidアプリでボタンの状態(ステータス)ごとに色を変化させるには
selectorの中で指定するボタンのステータスの順番で意図したとおりにうまくいったりいかなかったり・・・。
とりあえず、ボタンが無効の時(state_enabled="false")を最初に記述したところenableがfalseの時の指定がうまく効いた。
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:color="#b0c4de"></item> <item android:state_pressed="false" android:color="#ffffff"></item> <item android:state_pressed="true" android:color="#b0c4de"></item> </selector>
AndroidアプリでTableRowのOnClickをバインドするには
TableRowのOnClickにActivityのメソッド名を指定しても、それだけだとクリックしても指定されたメソッドは呼び出されない。
TableRowのプロパティにandroid:clickable="true"を追加してやるとイベントを拾えるようになる。
<TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" android:onClick="showHowToPlay" >
Androidアプリで動的に生成したViewの幅や高さを取得するには
Viewを動的に生成する場合に、ほかのViewの幅を揃えたい場合などがあると思うが、ViewのgetWidth()はレイアウトが完了してからでないと0を返してくるので、取得したい幅が取得できない。
そこで、ViewTreeObserverのaddOnGlobalLayoutListener()を使って、レイアウト完了後にコールバックを受けて幅を取得する。
// ボタンの高さを幅に合わせる ViewTreeObserver vto = btnHoge.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int width = btnHoge.getWidth(); } });
Androidアプリで別のActivityを起動するには
Androidアプリで別のActivityを起動するにはIntentのインスタンスを生成し、startActivity()メソッドに渡す。
Intent intent = new Intent(this, HogeActivity.class); startActivity(intent);
AndroidのActivityで画面を縦固定にするには
AndroidのActivityで画面を縦固定にするにはsetRequestedOrientation()メソッドにActivityInfoの定数SCREEN_ORIENTATION_PORTRAITを渡す。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // タイトルバーを非表示に requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); // 画面は縦固定 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Activityのタイトルバーをコードで非表示にするには
Activityのタイトルバーをコードで非表示にするには、requestWindowFeature()メソッドにWindowの定数FEATURE_NO_TITLEを渡す。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // タイトルバーを非表示に requestWindowFeature(Window.FEATURE_NO_TITLE);
2013年11月19日火曜日
AFreeChart-0.0.4の折れ線グラフでICS上では判例が正しく表示されない問題の回避策
// AFreeChart-0.0.4でICSでは凡例が正しく表示されない問題の回避 if(Build.VERSION.SDK_INT > 10){ chartView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); }
ラベル:
AFreeChart,
Android
2013年6月27日木曜日
jQueryでHTMLのテーブルにページング機能を付与する
(function($) {
$.fn.tablepager = function(options){
var defaults = {
table: null,
pager: null,
limit: 10,
displayingText: '%TOTAL_ROW%件中、%FIRST_ROW% - %LAST_ROW%を表示',
firstText: '最初',
lastText: '最後',
prevText: '前へ',
nextText: '次へ',
version: 0.1
};
defaults.table = this.selector;
options.pager = options.pager;
var config = $.extend({}, defaults, options);
moveTo(1);
if (this.tablesorter) {
this.trigger('update');
}
// TABLE TBODY内のTRの数を返します
function countRow() {
return $(config.table).find("tbody tr").size();
}
// 最大ページ数を返します
function countPage() {
return Math.ceil(countRow() / config.limit);
}
// nページへ移動します
function moveTo(n) {
n = n ? n : 1;
offset = config.limit * (n - 1);
maxrow = offset + config.limit - 1;
$.each($(config.table).find("tbody tr"), function(index){
if (index < offset || index > maxrow) {
$(this).css('display', 'none');
} else {
$(this).css('display', '');
}
});
pagenate(n);
}
// ページネーションを出力します
function pagenate(currentPage) {
$(config.pager).empty();
if (countRow() == 0) return false;
var firstRow = (currentPage - 1) * config.limit + 1;
var lastRow = firstRow - 1;
$.each($(config.table).find("tbody tr"), function(){
if($(this).css('display') != 'none') {
lastRow++;
}
});
var markup = config.displayingText.replace('%TOTAL_ROW%', countRow())
.replace('%FIRST_ROW%', firstRow)
.replace('%LAST_ROW%', lastRow);
for(var i=1; i <= countPage(); i++) {
if (currentPage != i) {
markup += '' + i + ' ';
} else {
markup += '' + i + ' ';
}
}
$(config.pager).append(markup);
$.each($(config.pager).find("a"), function(index){
if($(this).text().match(/^\d$/)) {
$(this).bind('click', function(){
moveTo($(this).text());
});
}
});
}
};
})(jQuery);
$.fn.tablepager = function(options){
var defaults = {
table: null,
pager: null,
limit: 10,
displayingText: '%TOTAL_ROW%件中、%FIRST_ROW% - %LAST_ROW%を表示',
firstText: '最初',
lastText: '最後',
prevText: '前へ',
nextText: '次へ',
version: 0.1
};
defaults.table = this.selector;
options.pager = options.pager;
var config = $.extend({}, defaults, options);
moveTo(1);
if (this.tablesorter) {
this.trigger('update');
}
// TABLE TBODY内のTRの数を返します
function countRow() {
return $(config.table).find("tbody tr").size();
}
// 最大ページ数を返します
function countPage() {
return Math.ceil(countRow() / config.limit);
}
// nページへ移動します
function moveTo(n) {
n = n ? n : 1;
offset = config.limit * (n - 1);
maxrow = offset + config.limit - 1;
$.each($(config.table).find("tbody tr"), function(index){
if (index < offset || index > maxrow) {
$(this).css('display', 'none');
} else {
$(this).css('display', '');
}
});
pagenate(n);
}
// ページネーションを出力します
function pagenate(currentPage) {
$(config.pager).empty();
if (countRow() == 0) return false;
var firstRow = (currentPage - 1) * config.limit + 1;
var lastRow = firstRow - 1;
$.each($(config.table).find("tbody tr"), function(){
if($(this).css('display') != 'none') {
lastRow++;
}
});
var markup = config.displayingText.replace('%TOTAL_ROW%', countRow())
.replace('%FIRST_ROW%', firstRow)
.replace('%LAST_ROW%', lastRow);
for(var i=1; i <= countPage(); i++) {
if (currentPage != i) {
markup += '' + i + ' ';
} else {
markup += '' + i + ' ';
}
}
$(config.pager).append(markup);
$.each($(config.pager).find("a"), function(index){
if($(this).text().match(/^\d$/)) {
$(this).bind('click', function(){
moveTo($(this).text());
});
}
});
}
};
})(jQuery);
2013年6月14日金曜日
TABLEにページング機能を追加するjQUery tablePagerプラグイン
TABLEにページング機能を追加するjQUery tablePagerプラグインを作ってみました。
/** * jQuery tablePager plugin * TABLEタグ内のTBODY下にあるTRタグを指定された件数ごとにページングし、 * 指定されたセレクタにページネーションを出力するjQueryプラグインです。 * * 【html】 * <div id='pager'></div> * <table id='item_list'> * <thead>…</thead> * <tbody> * <tr> * <td>xxxxxxx</td> * * 【javascript】 * $('#item_list').tablePager(); * * 【option】 * appender : ページネーションを出力する要素のID * displayingText: (既定)%TOTAL_ROW%件中、%FIRST_ROW% - %LAST_ROW%を表示' * %で囲まれた部分が変数によって置換されます。 * firstText : (既定)最初→最初のページへのリンクに使用する文字列です。 * lastText : (既定)最後→最後のページへのリンクに使用する文字列です。 * prevText : (既定)前へ→前のページへのリンクに使用する文字列です。 * nextText : (既定)次へ→次のページへのリンクに使用する文字列です。 * */ (function($){ $.extend({ tablePager: new function() { // 設定情報 var config; // デフォルト値 var defaults = { limit: 10, page: 1, appender: 'pager', tableId: '', displayingText: '%TOTAL_ROW%件中、%FIRST_ROW% - %LAST_ROW%を表示', firstText: '最初', lastText: '最後', prevText: '前へ', nextText: '次へ', }; // 総レコード数を返す function getRecordCount() { return $(config.tableId).find("tbody tr").length; } // 1ページあたりの表示件数を返す function getLimit() { return config.limit; } // 最大ページ番号を返す function getMaxPages() { return Math.ceil(getRecordCount() / config.limit); } // 現在表示しているページを返す function getPage() { return config.page; } // 現在表示しているページの最初の行番号を返す function getFirstRow() { return config.limit * (config.page - 1) + 1; } // 現在表示しているページの最後の行番号を返す function getLastRow() { return getFirstRow() + $(config.tableId).find('tbody tr:visible').length - 1; } /** * public methods */ // id が appender のエレメントにページネーションを出力する $.fn.pagenate = function pagenate() { var prefix = '_pagenate'; $('#'+config.appender).html('') var link = config.displayingText.replace('%TOTAL_ROW%', getRecordCount()) .replace('%FIRST_ROW%', getFirstRow()) .replace('%LAST_ROW%', getLastRow()); if (config.page > 1) { link += '|<a href="javascript:void(0);" onclick="$(\'' + config.tableId + '\').page(1)">' + config.firstText + '</a> '; link += '|<a href="javascript:void(0);" onclick="$(\'' + config.tableId + '\').page(' + (config.page - 1) + ')">' + config.prevText + '</a> '; } for(var i=1; i<=getMaxPages(); i++) { id = prefix + i; if (i != config.page) { link += '<a href="javascript:void(0);" onclick="$(\'' + config.tableId + '\').page(' + i + ')">' + i + '</a> '; } else { link += '<b>' + i + '</b> '; } } if (config.page < getMaxPages()) { link += '|<a href="javascript:void(0);" onclick="$(\'' + config.tableId + '\').page(' + (config.page + 1) + ')">' + config.nextText + '</a> '; link += '|<a href="javascript:void(0);" onclick="$(\'' + config.tableId + '\').page(' + getMaxPages() + ')">' + config.lastText + '</a> '; } $('#'+config.appender).append(link); } // nページへ移動する $.fn.page = function page(n) { config.page = n; var offset = config.limit * (config.page - 1); var nRow = 1; $.each($(config.tableId).find("tbody tr"), function(){ if (nRow > offset && nRow <= offset + config.limit) { $(this).show(); } else { $(this).hide(); } nRow++; }); // ページネーションを再描画 this.pagenate(); return false; } // コンストラクタ this.construct = function(options) { config = $.extend(defaults, options); config.tableId = this.selector; this.page(1); this.pagenate(); }; return this; } }); // extend plugin scope $.fn.extend({ tablePager: $.tablePager.construct }); })(jQuery);
2013年6月6日木曜日
CSS:長いURLなどをブロック要素内で強制的に折り返すには
CSS:長いURLなどをブロック要素内で強制的に折り返すには
word-wrap:break-word;
word-break:break-all;
word-break:break-all;
2013年5月29日水曜日
2013年5月1日水曜日
2013年4月17日水曜日
PHPの正規表現でHTMLの実体参照を取り除く
$bodyから実体参照(たとえば&とか>、<、"など)を取り除く場合
preg_replace("/&#?[a-z0-9]{2,8};/i","",strip_tags($body));
2013年4月16日火曜日
Symfony2のBasic認証が失敗する
PHPがFastCGIで動作しているサーバの場合は.htaccessでRequestヘッダを通過させるよう設定する必要があるみたい。
Symfony2の場合はweb/.htaccessにこんな感じで。
Symfony2の場合はweb/.htaccessにこんな感じで。
<IfModule mod_rewrite.c> RewriteEngine On <IfModule mod_vhost_alias.c> RewriteBase / </IfModule> RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.php [QSA,L] # Pass Authorization headers to an environment variable RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] </IfModule>
2013年4月15日月曜日
Googleカレンダーに「日本の祝日」カレンダーを追加するには
Googleカレンダーに「日本の祝日」カレンダーを追加するには
1.Googleカレンダーにアクセス
2.[他のカレンダー]→[おすすめのカレンダーを検索]
3.[日本の祝日]の[登録]をクリックする
1.Googleカレンダーにアクセス
2.[他のカレンダー]→[おすすめのカレンダーを検索]
2013年4月14日日曜日
PHPで文字列から画像のURLを抽出してIMGタグに置換する
掲示板なんかでよく使うアレですね。
$pattern = '/(ttps?)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\.(jpg|gif|png)/'; preg_match_all($pattern, $body, $matches); if(count($matches)){ foreach($matches[0] as $i=>$url) { $replace = "<img src='h{$url}'>"; $images[] = $replace; $body = str_replace($url, $replace, $body); } }
2013年4月13日土曜日
Bootstrapでヘッダのナビゲーションを画面上部に固定するには
画面上部にナビゲーション領域を固定したり、デスクトップとスマホ用のコンテンツを一つのHTMLで表現したりするためによく使うテンプレートをここにコピペしておきます。
<!DOCTYPE html> <html lang="ja"> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta charset="UTF-8" /> <link rel="stylesheet" href="/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/bootstrap-responsive.min.css" /> <title>Welcome!</title> <link rel="icon" type="image/x-icon" href="/favicon.ico" /> </head> <body> <div class="navbar navbar-fixed-top"> <div class="navbar-inner"> <div class="container"> <a class="btn btn-navbar pull-left" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="brand" href="#">Your Brand</a> <div class="nav-collapse"> <ul class="nav"> <li class="active"><a href="#">Home</a></li> </ul> </div><!--/.nav-collapse --> </div> </div> </div> <div class="container"> </div> <script src="/app_dev.php/js/jquery.min.js"></script> <script src="/app_dev.php/js/bootstrap.min.js"></script> </body> </html>
Symfony2でBootstrapを利用する場合の設定例
Symfony2でBootstrapを利用する場合に、だいぶ苦労したので忘れないうちにメモ。
まずバンドルのResources/publicの下にBootstrapのcss、img、jsファイルを配置。
config.ymlでAsseticの設定で、対象となるBundleにHogeFugaBundleを追加する。
bootstrapのCSSとJavaScriptを読み込めるようにTwigを記述。
で、最後に
まずバンドルのResources/publicの下にBootstrapのcss、img、jsファイルを配置。
Hoge └─FugaBundle ├─Controller ├─DependencyInjection ├─Entity ├─Resources │ ├─config │ ├─public │ │ ├─css/ │ │ │ bootstrap-responsive.css │ │ │ bootstrap-responsive.min.css │ │ │ bootstrap.css │ │ │ bootstrap.min.css │ │ │ │ │ ├─img/ │ │ │ glyphicons-halflings-white.png │ │ │ glyphicons-halflings.png │ │ │ │ │ └─js/ │ │ bootstrap.js │ │ bootstrap.min.js │ │ jquery.min.js │ └─views │ └─Matome └─Tests └─Controller
config.ymlでAsseticの設定で、対象となるBundleにHogeFugaBundleを追加する。
# Assetic Configuration assetic: debug: %kernel.debug% use_controller: true bundles: [ HogeFugaBundle ] #java: /usr/bin/java filters: cssrewrite: ~ #closure: # jar: %kernel.root_dir%/Resources/java/compiler.jar #yui_css: # jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar
bootstrapのCSSとJavaScriptを読み込めるようにTwigを記述。
<html lang="jp"> <head> {% stylesheets 'bundles/hogefuga/css/bootstrap.min.css' filter='cssrewrite' 'bundles/hogefuga/css/bootstrap-responsive.min.css' filter='cssrewrite' %} <link href="{{ asset_url }}" rel="stylesheet"></link> {% endstylesheets %} <title>{% block title %}Welcome!{% endblock %}</title> {% block stylesheets %}{% endblock %} <link href="{{ asset('favicon.ico') }}" rel="icon" type="image/x-icon"></link> </head> <body> {% block body %} <legend>Hello Bootstrap <i class="icon-heart"></i></legend> {% endblock %} {% javascripts '@HogeFugaBundle/Resources/public/js/jquery.min.js' '@HogeFugaBundle/Resources/public/js/bootstrap.min.js' %} <script src="{{ asset_url }}"></script> {% endjavascripts %} {% block javascript %} {% endblock %} </body> </html>
で、最後に
php app/console assets:install php app/console assetic:dump
画像からBootstrapのCSSをカラーコーディネートしてくれるサイト
画像を投稿すると、その画像をもとにしてBootstrapのCSSをカラーコーディネートしてくれるサイト。
http://www.lavishbootstrap.com/
自分のサイトの雰囲気にあった画像を投稿すれば、それっぽいCSSを出力してくれる。
Symfony2でバンドルを作成するには
バンドルを作成するにはgenerate:bundleを使用する。
最初にnamespaceだけ決めれば途中でいくつか質問されるが、デフォルトのままOKを押せばOK。
ただし、Configuration formatはymlがおすすめ。 Symfony2では何かと設定ファイルを編集することになるが、設定の仕方を調べるとほとんどYAML形式での設定方法を記述しているので、YAMLを選択すると楽になるかも。
最初にnamespaceだけ決めれば途中でいくつか質問されるが、デフォルトのままOKを押せばOK。
ただし、Configuration formatはymlがおすすめ。 Symfony2では何かと設定ファイルを編集することになるが、設定の仕方を調べるとほとんどYAML形式での設定方法を記述しているので、YAMLを選択すると楽になるかも。
#php app/console generate:bundle --namespace=Hoge\FugaBundle
Welcome to the Symfony2 bundle generator
Your application code must be written in bundles. This command helps
you generate them easily.
Each bundle is hosted under a namespace (like Acme/Bundle/BlogBundle).
The namespace should begin with a "vendor" name like your company name, your
project name, or your client name, followed by one or more optional category
sub-namespaces, and it should end with the bundle name itself
(which must have Bundle as a suffix).
See http://symfony.com/doc/current/cookbook/bundles/best_practices.html#index-1 for more
details on bundle naming conventions.
Use / instead of \ for the namespace delimiter to avoid any problem.
Bundle namespace [Hoge\FugaBundle]:
In your code, a bundle is often referenced by its name. It can be the
concatenation of all namespace parts but it's really up to you to come
up with a unique name (a good practice is to start with the vendor name).
Based on the namespace, we suggest HogeFugaBundle.
Bundle name [HogeFugaBundle]:
The bundle can be generated anywhere. The suggested default directory uses
the standard conventions.
Target directory [C:/xampp/htdocs/your-project/src]:
Determine the format to use for the generated configuration.
Configuration format (yml, xml, php, or annotation) [annotation]: yml
To help you get started faster, the command can generate some
code snippets for you.
Do you want to generate the whole directory structure [no]?
Summary before generation
You are going to generate a "Hoge\FugaBundle\e" bundle
in "C:/xampp/htdocs/your-project/src/" using the "yml" format.
Do you confirm generation [yes]?
Bundle generation
Generating the bundle code: OK
Checking that the bundle is autoloaded: OK
Confirm automatic update of your Kernel [yes]?
Enabling the bundle inside the Kernel: OK
Confirm automatic update of the Routing [yes]?
Importing the bundle routing resource: OK
You can now start using the generated code!
Welcome to the Symfony2 bundle generator
Your application code must be written in bundles. This command helps
you generate them easily.
Each bundle is hosted under a namespace (like Acme/Bundle/BlogBundle).
The namespace should begin with a "vendor" name like your company name, your
project name, or your client name, followed by one or more optional category
sub-namespaces, and it should end with the bundle name itself
(which must have Bundle as a suffix).
See http://symfony.com/doc/current/cookbook/bundles/best_practices.html#index-1 for more
details on bundle naming conventions.
Use / instead of \ for the namespace delimiter to avoid any problem.
Bundle namespace [Hoge\FugaBundle]:
In your code, a bundle is often referenced by its name. It can be the
concatenation of all namespace parts but it's really up to you to come
up with a unique name (a good practice is to start with the vendor name).
Based on the namespace, we suggest HogeFugaBundle.
Bundle name [HogeFugaBundle]:
The bundle can be generated anywhere. The suggested default directory uses
the standard conventions.
Target directory [C:/xampp/htdocs/your-project/src]:
Determine the format to use for the generated configuration.
Configuration format (yml, xml, php, or annotation) [annotation]: yml
To help you get started faster, the command can generate some
code snippets for you.
Do you want to generate the whole directory structure [no]?
Summary before generation
You are going to generate a "Hoge\FugaBundle\e" bundle
in "C:/xampp/htdocs/your-project/src/" using the "yml" format.
Do you confirm generation [yes]?
Bundle generation
Generating the bundle code: OK
Checking that the bundle is autoloaded: OK
Confirm automatic update of your Kernel [yes]?
Enabling the bundle inside the Kernel: OK
Confirm automatic update of the Routing [yes]?
Importing the bundle routing resource: OK
You can now start using the generated code!
登録:
投稿 (Atom)