【PHP】Yii Framework
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/12/10(金) 00:41:11ID:???公式
http://www.yiiframework.com/
チュートリアル
ttp://www.yiiframework.com/doc/guide/
公式フォーラム
ttp://www.yiiframework.com/forum/index.php?/forum/21-japanese/
0574nobodyさん
2012/01/19(木) 01:10:41.70ID:???いやHAS_MANYも試してないけど、多分できない気がする
オブジェクト→checkBoxListに渡す配列への変換を自動でしてくれないんだな
フレームワークなのにこういう重要な部分を手動でしてくれないのかな?
0575nobodyさん
2012/01/19(木) 01:14:25.50ID:???http://www.yiiframework.com/doc/guide/1.1/ja/form.table
これは答えになる?
0576nobodyさん
2012/01/19(木) 05:18:57.24ID:???取得したレコードを元にチェックボックス用の配列を返すメソッドを用意したほうがはやそう。
0577nobodyさん
2012/01/19(木) 19:00:57.37ID:???>>575のやり方+こうやればいいだけじゃないの
$data = array();
foreach($models as $model) {
$data[$model->id] = ''label";
}
>checkBoxListで表示(該当部分をチェック)させるのって
あと、gridviewとか使って各モデルの情報を一行で表してるなら、checkBoxListは妥当ではないと思うな
その場合、1行ずつチェックボックス付ければいいだけじゃね
'CHtml::activeCheckBox($data, "check")',
まあ、やりたいことが分からないよね
0578nobodyさん
2012/01/21(土) 16:42:05.68ID:???・管理用Controllerを作って、そこにアクション押しこむ
・そもそも別にフォルダ作って、ユーザ用と管理用のprotectedを別々に管理する
他にもいろいろ方法あるかな
俺はとりあえず前者で作ってるんだけど、
バグで脆弱性作っちゃったり、セキュリティを考えると後者のほうが良い感じだけど、
同じ処理を持たなきゃいけなかったり無駄が多そうだよね
0579572
2012/01/22(日) 00:44:52.66ID:???ありがとうございます。
やりたいことは、
投稿にMANY_MANYでタグが関連付けられているといったときのケースです。
Post、PostTag、Tag
というモデルがあり、
PostのフォームにcheckBoxListで
あらかじめあるタグリストがチェックボックスでずらーっと並んでいるとき、
投稿のフォームでチェックした複数のタグをPostTagに投稿ID+タグIDを保存する
保存するときは、PostモデルのafterSaveでチェックボックスの配列をforeachして
手動で保存していたのですが、
既存の投稿を編集(アップデート)するときに、関連付けられたタグを
投稿したときと同じようにデフォルトでcheckedを入れたかった
ただ、いろいろ調べたりアドバイスを見るかぎり、
アップデートのときも手動でforeachしてcheckedするしかないようですね。
ありがとうございました!
0580nobodyさん
2012/01/22(日) 18:12:42.38ID:i1iVcXOA用途は違うけど、これがたぶん君が言っている自動化に近いと思う
// postアクションメソッド.
$model = new Post;
if(isset($_POST['Post'])){
try {
$transaction = Yii::app()->db->beginTransaction();
$model->attributes=$_POST['Post'];
foreach($_POST['Post']['tags'] as $tag) {
$postTag = new PostTag();
$postTag->id_post = $model->id;
$postTag->id_tag = $tag;
$postTag->save();
}
$model->save();
$transaction->commit();
} catch(Exception $e) {
$transaction->rollBack();
}
}
// view
echo CHtml::activeCheckBoxList($model, 'tags', CHtml::listData(
Tag::model()->findAll(), 'id', 'name'
));
※インデントは全角スペース、エラー処理はなし、実行してない
こんな感じ?
と、ここまで書いて、下のエクステンション見つけた
http://www.yiiframework.com/extension/esaverelatedbehavior/
俺もいろいろ勉強になった、ありがとう
0581nobodyさん
2012/01/23(月) 03:55:32.99ID:???おつ
MANY_MANYの保存は2つ目のURLのエクステンションでいけるね
アップデートのときにcheckBoxListをcheckedさせるには1つ目のURLにヒントがあった
0582nobodyさん
2012/01/23(月) 19:13:13.51ID:g71C+axW0583nobodyさん
2012/01/24(火) 06:12:58.16ID:???0584nobodyさん
2012/01/24(火) 15:29:19.24ID:7osuj7Qxこれくらいは英語で十分だなって思ってただけど、やっぱり読むスピードが全然違うな
0585nobodyさん
2012/01/25(水) 01:04:42.19ID:PRfu+W52WEBサーバーの処理800msのうち10ms〜20msくらいでrender出来ちゃう
0586nobodyさん
2012/01/25(水) 13:51:38.28ID:???ARとかどこで使うんだあれ。
0587nobodyさん
2012/01/25(水) 13:53:45.77ID:???ローカルではうまくいくのに、さくらインターネットにアップロードすると
トップページは表示されるものの、コントローラなどがInternal Sever Errorになってしまいます。
ローカルの設置場所:
DOCUMENT_ROOT/example.com/
さくらインターネットの設置場所:
DOCUMENT_ROOT/example.com/
(/home/USERNAME/www/example.com/)
上記の「example.com」がアプリケーションのディレクトリ(protectedなどがあるもの)です。
htaccessの内容は、
RewriteEngine on
RewriteBase /example.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
こうなっています。
ドキュメントルートからの構成は同じで、
ローカルではちゃんと表示されているんですが・・・
0588nobodyさん
2012/01/25(水) 19:11:55.85ID:???その時はもうindex.phpありでいいやで妥協しましたが
これ何が原因なんでしょうかね。Apacheのバージョン?
0589nobodyさん
2012/01/25(水) 19:25:30.26ID:YwP4y9rdYii全く関係ないじゃん
0590nobodyさん
2012/01/25(水) 19:49:43.53ID:???0591nobodyさん
2012/01/25(水) 20:02:54.58ID:???0592nobodyさん
2012/01/25(水) 20:35:04.64ID:???スペル怪しいけどw
0593587
2012/01/25(水) 21:59:53.64ID:???[Wed Jan 25 21:32:44 2012] [error] [client 66.249.69.201] mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary
ループしているみたいですかね・・・?
ただCakePHPのときもさくらインターネットでは同じエラーが出ていました
http://blog.syuhari.jp/archives/2056
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=76&forum=2
↑これと同じだと思います。
このときは RewriteBase をいじって解決したので
今回もいろいろいじっているのですが、全然だめです
>>588さん以外にもレンタルサーバーで利用している方いそうですけど、
どうやって解決しているんでしょうかね・・・
0595nobodyさん
2012/01/25(水) 22:25:49.17ID:???ちゃんとレス内容までは見てないけど、単に設定ミスでしょ
Yiiと関係ないからスレチだけど
0596nobodyさん
2012/01/25(水) 22:30:53.35ID:???0598587
2012/01/26(木) 00:53:49.69ID:???そのサーバと同じとこに乗せてエラー出てるの
でYiiが原因か、Yiiに詳しい人ならわかるかなぁと思って・・・すいません
0599nobodyさん
2012/01/26(木) 01:05:58.94ID:???Internal Sever Errorがどういうときに出るのかを調べたほうが良いかも
スペルミスしてない?
とりあえずYiiが原因では無いと思うよ
0600nobodyさん
2012/01/26(木) 07:48:27.99ID:???何得意げになって書いてんの?www
0601nobodyさん
2012/01/26(木) 11:30:37.83ID:???0602587
2012/01/26(木) 11:33:01.61ID:???>>587を見てもらえればわかるようにスペルミスではないはずです。
とりあえずさくらインターネットのスレに行ってみます。
あっちでもスレ違いだって言われそうだけど・・・
ありがとうございました
0603nobodyさん
2012/01/26(木) 12:43:52.75ID:???さくらスタンダードなら>>587の.htaccessの設定でエラーは出ないはず。
>>587のYiiの設定が原因くさいと思うぜ。
>>587が悪いのは、素のYiiをインストールしてデフォルトのloginあたりのurlでも
internal server errorが出るかどうか
(http://something.sakura.ne.jp/example.com/site/login)
を確かめもしないで、自分が「作った」アプリであれこれパニクってる点。
0604nobodyさん
2012/01/26(木) 12:45:17.60ID:???Yiiスレでエラー切り分けを問いたいなら、そういうところをちゃんと書くべし。
0605587
2012/01/26(木) 13:27:32.58ID:???助言のとおり
http://example.sakura.ne.jp/exmple.com/site/login
で見ると正しく表示されました。
原因はドメインでアクセスするときにあるようです。
http://example.com/site/login
このURLでアクセスするとInternal Server Errorになるので。
ドメインでアクセスするときに、htaccessがどう動くかもっと調べてみます。
Yiiが原因ではなさそうなので、退散します!
スレ汚し失礼しました!
0606nobodyさん
2012/01/26(木) 14:46:59.49ID:???/home/ユーザ名/www/example.com
が別ドメインのdocルートだっていう情報を提供せずにいたのが痛いわけだが、
それはともかく、
http://example.com/site/loginでのそのInternal Server Errorは、単純に
.htaccessの
Rewritebaseが
/example.com
になっているからに過ぎないと思うね。
Rewritebaseは/(URLパスルート)じゃなきゃいけないでしょ。そういう場合は。
まあスレ汚しにスレ違いのレスをするのもなんだけどさ。
0608nobodyさん
2012/01/26(木) 14:59:25.18ID:???0609nobodyさん
2012/01/26(木) 15:56:04.19ID:???皆さんは直接ファイルを編集していますか?
それとも別moduleを作成してuser-moduleをオーバーライド
してますか?
0610nobodyさん
2012/01/26(木) 16:06:14.49ID:???0611609
2012/01/26(木) 16:08:47.08ID:???言葉足りなくてすみません
yii-userというuser管理moduleのことでした
http://www.yiiframework.com/extension/yii-user/
0612nobodyさん
2012/01/26(木) 16:10:57.85ID:???出来合のクラスを直接書き換えるというのは愚。
0614nobodyさん
2012/01/26(木) 17:34:05.28ID:???多分yii-userをカスタマイズしていくとわかりますが、けっこう大変ですよ
0615609
2012/01/26(木) 18:02:36.06ID:???やっぱそうなんですか
経験があまり無いので色々試してみようかと思います
別moduleを作成してyii-userをextends
>>613
ユーザの管理画面がすぐ完成するのが便利かと
プロフィール編集とか
0616nobodyさん
2012/01/26(木) 18:14:32.07ID:G7JApHSthttp://symfony.com/doc/2.0/book/http_cache.html
symfony詳しくないけど、ここら辺の機能はないな
0617609
2012/01/26(木) 21:24:35.58ID:???難しいものですね
module内でextendsしたmodule名が呼ばれていたり
結局moduleを直に書き換えているのとあまり変わらないような
この辺のノウハウというかヒントになりそうな情報があったら
教えて頂けるとありがたいです
0619609
2012/01/27(金) 00:25:22.09ID:???yii-user moduleを利用してます。
modules/user/UserModule.phpをYii::importしてから、modules/user/UserextModule.phpで
extendsしました。
これだとURLでindex.php?r=userext/profileを開くとmodelでエラーが出ます。
Yii::app()->getModule('user')->tableUsersのobjectが存在しないということらしいのです。
Yii::app()->getModule('userext')->tableUsersと書き換えれば通りますが、
結局元のmodelを書き換えてしまうことになります。
何かやり方がマズいようでしたら、こうした場合の良い方法があればヒントを頂きたく。
0620nobodyさん
2012/01/27(金) 00:57:23.52ID:???'modules' => array('user' => array('id' => 'userext'...ではダメですか?
0621nobodyさん
2012/01/27(金) 03:18:59.10ID:???自分の使いやすいように、moduleファイルを普通に修正すればよいと思う。俺はそうしてる。
0622nobodyさん
2012/01/27(金) 05:28:21.85ID:???yii-userの特定のクラスをextendsしようが
ファイルの中身を直接修正しようが、リスクはかなり大きいと思いますよ?
あと、ファイルの中身を直接修正するということは
yii-userがバージョンアップしても
それを使えない、もしくはextendsするより修正のリスクが大幅に上がることを考慮しないといけませんよ
0623nobodyさん
2012/01/27(金) 09:01:08.42ID:???自分が育てるという>>621な人も、>>612,>>622の考え方に立った上で
独自拡張していると考えたい。
とはいえ、結構ハードコーディングがあったりして>>617のように
>結局moduleを直に書き換えているのとあまり変わらないような
ということがあるのもわかる。
というわけで俺的方針。
(1)extends基本。
(2)「moduleを直に書き換え」と同じ手間っぽくて、かつ2,3の修正で済むなら
直接書き換えて、diffの履歴をとっておく。
(3)出力系の修正なら、置換用のラッパー作ってそれで対応。
(4)かなり変更が必要で、それでもそのモジュールを使い切りたい(バージョンアップにも
対応したい)場合=>(a)対象モジュールのクラス名称を全部かえて(シェルスクリプトを書く)
その後(b)自分の拡張モジュールでその対象モジュールクラス名を使う。
(4)で対応が出来ないようなら、使うのやめる。そこまで拡張が難しいなら今後も悩まされるはず。
ところで、>>609さん。>>619のケースなら、>>620さんの指摘でいけるんじゃないだろうか。
loadUserメソッドがわざわざモデルの変更を想定しているんだから。
0624609
2012/01/27(金) 14:10:16.57ID:???試してみましたが、挙動が変わらなかったです。
元々yii-userが考慮していないpropertyなのかもしれません。
色々方法やサンプルを探してみましたが、
moduleのextendsに関するものはなかなか出てこないです。
Yiiで制作されているオープンソースソフトウェアで
modulesのextendsしているものがあるか探してみようと思います。
無ければ、
>>623のdiffで取るやり方が正道なのかもしれませんね。
yii-userはバージョンアップの頻繁なmoduleのため、
直接編集すると大変そうですが。
>>622
>yii-userの特定のクラスをextendsしようが
>ファイルの中身を直接修正しようが、リスクはかなり大きいと思いますよ?
これはそもそもyii-userが日本向けサイトに向いてない作りという意味ですか?
0625nobodyさん
2012/01/27(金) 16:47:50.95ID:???class ProfileController extends Controller
public function loadUser()
{
if($this->_model===null)
{
if(Yii::app()->user->id)
$this->_model=Yii::app()->controller->module->user();
なんだから考慮してると思うんだけど。
0626nobodyさん
2012/01/27(金) 20:34:27.33ID:ujQCEknc(4)で対応が出来ないようなら、アップデートを諦めるじゃなくて?
0627nobodyさん
2012/01/27(金) 23:50:45.19ID:???http://code.google.com/p/yii-user/source/browse/#svn%2Ftrunk%2Fmodules%2Fuser%2Fmessages%2Fja
オフィシャルからのDLでは現在r107までのリビジョンなので、jaファイルは入ってません
あとここで少しデモれますよ
http://yii-user.2mx.org/
ユーザー登録する際は、アクティベーションのメールはfalseになっているので
ユーザ登録の流れなども確認できます
ログインの際に「ユーザ名が正しくありません」とか
「パスワードが間違っています」とか出るのはかなり痛いですがw
0630nobodyさん
2012/01/28(土) 00:24:59.90ID:???0631nobodyさん
2012/01/28(土) 12:29:44.71ID:???これをやめさせる方法ない?
今は無理矢理extendsして、
public function registerClientScript() {}
と空のfunctionをoverrideした
0632609
2012/01/28(土) 15:14:14.90ID:???確認の仕方が悪かったです。ありがとうございます。
idでmodule名を切り替え出来ました。
しかしmodelsやviewsを拡張していくことを考えるとやはり
moduleは直接編集していくのが本道なのかもという気がしてきました。
それを考えるとyii-userのprofilesの項目追加の仕組みがややこしいのも
CMSを提供するのと同時に、ソースを触らせない前提という意図もあるのかなと。
0633nobodyさん
2012/01/28(土) 15:44:12.26ID:rvnKSfbf意味分からんかったらごめん
0634nobodyさん
2012/01/28(土) 17:21:17.49ID:???CBaseListViewをextendsして独自に作っていく方法のほうがより好みのwidgetを作れます
jqueryとbbqをheadに貼り付けたくないだけなら、ここらへんを抜いたもんを上書きすればOK。まさにやってそうですけど
$cs=Yii::app()->getClientScript();
$cs->registerCoreScript('jquery');
$cs->registerCoreScript('bbq');
$cs->registerScriptFile($this->baseScriptUrl.'/jquery.yiilistview.js',CClientScript::POS_END);
$cs->registerScript(__CLASS__.'#'.$id,"jQuery('#$id').yiiListView($options);");
>>632
yii-userがどういうものを扱っているモジュールなのか考えれば
基本的な設定はconfig/main.phpで上書きするようにして
他は直接編集していく形をとるのがベストだと思います
あと、ビューはif文などに気を使いながら、直接編集していくものです。拡張もくそもない
でも前に言いましたが、yii-userは編集するリスクがかなりあるので、1から自分で作るほうが賢いやり方のように思います
0635nobodyさん
2012/01/29(日) 00:01:11.23ID:???0636nobodyさん
2012/01/29(日) 02:39:53.42ID:AvSKvvcH以下のような話に対応出来るという利点が一番大きいのかな
たしかにソースでデータベースの構造も構成管理出来るというのは納得できる利点なのかも
>ソースコードについて昔の状況が呼び出せてたとしても、それに依存するデータベースの状況も再現できなければまったく意味がないのです。
>これを実現するためには、従来はDDLを記述したファイルを直接コミットして管理するしかありませんでした。
http://www.atmarkit.co.jp/fdb/single/08s_jiemamy/jiemamy1.html
0638nobodyさん
2012/01/29(日) 14:10:01.28ID:???Wikiでまとめられてたけど
Cookieってそんな重要とされてないのかね
0639nobodyさん
2012/01/29(日) 14:35:08.80ID:???俺もガイドがないから、仕方なくソースから勉強した
0640nobodyさん
2012/01/29(日) 19:10:32.17ID:???echo $form->textField($model,'name',array('size'=>50,'maxlength'=>50,'value'=>"デフォルト値"));
上記のようにデフォルトの値を設定すると、
送信後エラーが起きてフォームに戻ってきた場合、
上書きしたデフォルト値が元に戻ってしまいます
上書きした値を使いたい場合どうしたらいいですか?
0641nobodyさん
2012/01/29(日) 19:52:30.40ID:???ビューに直接PHPコードを書く方法
http://www.yiiframework.com/forum/index.php?/topic/16737-form-input-default-value-overrides-model-value/
モデルをnewしたときにデフォルト値を入れておく方法
http://www.yiiframework.com/forum/index.php?/topic/11960-preferred-way-to-set-dynamic-default-values-in-a-cactiverecord-model/page__view__findpost__p__58656
ここらへんが参考になるんじゃないでしょうか
0642636
2012/01/29(日) 21:12:56.09ID:AvSKvvcHまんまARの利点として言えるんじゃないかと思うんだがどうだろう
※記事の内容はARとは直接的に関係ない
http://objectclub.jp/community/XP-jp/xp_relate/evodb-jp
>データベースアクセスコードを明確に分離する
>データベースリファクタリングの影響を把握するためには、データベースがアプリケーションによってどのように使われているかを調べることが可能でなければならない。
>SQLがコード達の中に乱雑に散らばっているならば、調査は非常に困難になる。
>つまり、データベースがどこでどのように使用されているかを明らかにするために、明確なデータベースアクセス層を設けることが重要になる。
>データベースアクセス層を設ける際にはPofEAAの中からデータソースアーキテクチャパターンのどれかに従うことを勧める。
ちなみに上記で言及されているPofEAAにもARが紹介されている
http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?ActiveRecord
業務系開発の中では意外と歴史があるらしく、ここら辺の書籍を読むことで経緯なんかも深く知ることが出来るのかもね
0643nobodyさん
2012/01/29(日) 23:42:45.59ID:hr7RMRmtcategory1 | category2
id name | id name price category1_id
1 果物 | 1 りんご 300 1
2 野菜 | 2 みかん 200 1
上記のsqliteのデータベースにある2つのテーブルから
id name price
1 果物 500
2 野菜 0
のように取り出したいとき
SQLで書くと
SELECT id, name, price FROM category1 c1
LEFT JOIN (
SELECT SUM(price) AS price, category1_id FROM category2
GROUP BY category1_id
) c2 ON c1.id=c2.category1_id
という感じになるのですが、このSQLをARで書く場合
$criteria=new CDbCriteria;
$criteria->select=array('id','name','price');
$criteria->join='
LEFT JOIN (
SELECT SUM(price) AS price, category1_id FROM category2
GROUP BY category1_id
) c2 ON c1.id=c2.category1_id
';
$cat=Category1::model()->find($criteria);
のような感じに書いたのですがjoinの中をもっと簡単に書けないでしょうか?
0644nobodyさん
2012/01/30(月) 01:19:36.01ID:???これでやっちゃうとか
http://www.yiiframework.com/doc/api/1.1/CActiveRecord#findAllBySql-detail
0645nobodyさん
2012/01/30(月) 05:21:55.39ID:???'select'=>'SUM(price) as price',
'group'=>'category1_id'
));
これでいけたりするんかいな?
0646nobodyさん
2012/01/30(月) 05:53:09.13ID:???findAllBySql()で良いんじゃないですか?
0647nobodyさん
2012/01/30(月) 20:07:10.18ID:???そもそもSQL自体こうだろ。
SELECT c1.id, max(c2.name), sum(c2.price)
FROM category1 c1
LEFT JOIN category2 c2 ON c1.id=c2.category1_id
GROUP BY c1.id
SQLよく知らないのにAR使うのは百害あって一利なしだからやめといた方がいい。
0648nobodyさん
2012/01/30(月) 21:09:49.76ID:???category2を外部結合してるから、c2.priceがnullだと、sum(c2.price)もnullになっちゃうよ?
0650nobodyさん
2012/01/30(月) 23:18:57.78ID:???だったらふつーは
sum(NullToZero(c2.price))
みたいにするよね。どう考えてもああはならん。
>>649
その認識はマジで改めた方がいい。
0651nobodyさん
2012/01/30(月) 23:50:08.15ID:???0652nobodyさん
2012/01/30(月) 23:54:50.25ID:???でもそのうち絶対壁にぶち当たるか、失敗する。
んで、ちゃんと勉強しておけばよかったと思うものさ。
0653nobodyさん
2012/01/31(火) 01:06:10.85ID:???0654nobodyさん
2012/01/31(火) 02:10:02.03ID:???表面上の言葉だけで議論しても意味ないっす
0655nobodyさん
2012/01/31(火) 03:24:00.33ID:???nameはナチュラルキーでUNIQUE NOT NULLだろうから、idと一対一つまり
複合UNIQUEとみなしてGROUP BY c1.id, c1.nameのようにしてはいけないの?
0657nobodyさん
2012/01/31(火) 20:05:03.72ID:???safeはどんなケースで利用するものですか?
validateで何も制限をつけないときに
書いてますが使い方間違ってないですかね?
0658nobodyさん
2012/01/31(火) 20:11:34.34ID:???0659nobodyさん
2012/01/31(火) 20:17:47.83ID:???0660nobodyさん
2012/01/31(火) 21:53:33.07ID:LWh8fO+Y0661nobodyさん
2012/01/31(火) 22:01:16.11ID:LWh8fO+Y俺もどんなケースでってのが思いつかないな
safeはルールを持ってない属性において、
$model->attributes = $_POST['model'];
で値を保存していいかどうかってことだよね?
基本的にフォームから受けとりたくない値が特別無い限りはその使い方でいいと思ってるんだけど
0662nobodyさん
2012/02/01(水) 17:10:34.37ID:???そこらへんを見ていくとわかるんじゃないでしょうか
0663nobodyさん
2012/02/05(日) 03:14:13.74ID:G96rv1NIたまたま見つけたからテンション上がった
http://www.skillshare.com/careers
>Developer
>Back-end development using PHP (Yii Framework) and MySQL, following best coding practices
0664nobodyさん
2012/02/12(日) 16:50:24.77ID:Qlu7hyjhそういう風に記述されているextensionがあったんだけど、
これだと他のextensionのpostFilterが呼び出されないことにならないか心配してる
class AnyFilter extends CFilter {
protected function preFilter($filterChain) {
$filterChain->run();
$this->postFilter($filterChain);
}
}
0665nobodyさん
2012/02/12(日) 19:04:19.10ID:9VDZvfC5基礎がわかる本とかサイトとかないでしょうか
0666nobodyさん
2012/02/12(日) 20:00:21.50ID:???0667nobodyさん
2012/02/12(日) 20:07:22.32ID:???0668nobodyさん
2012/02/12(日) 20:39:49.70ID:???英語ですか……学生時代もっと頑張っておくんだったなぁ
>>667
探してみます。ありがとうございます。
0669nobodyさん
2012/02/12(日) 20:59:01.29ID:9VDZvfC5思い切って注文しました。辞書を片手に頑張ります
0670nobodyさん
2012/02/12(日) 23:28:33.50ID:???0671nobodyさん
2012/02/13(月) 00:06:36.07ID:???0672nobodyさん
2012/02/13(月) 01:03:04.20ID:???0673nobodyさん
2012/02/13(月) 01:32:52.23ID:???■ このスレッドは過去ログ倉庫に格納されています