3100

はてダから移行予定&真面目に更新予定

OSQA×Django1.3でURLや引用を含む質問or解答が表示されない不具合を修正する

Stack OverflowライクなQ&Aサイトを作るためのOSQAですが、どうもURLが表示されないよ、という不具合がいくつか報告されていました。

自分もまさにこの現象に苦しんでいて、といってもあまり本気で対処するヤル気がなく、割りと放置していました。

が、これに対してようやく対応策が示されました。

[#OSQA-807] OSQA and Django 1.3.1. error when posting text with URL - OSQA JIRA

原因はどうもmarkdownのバージョンが上がったことによるものらしいです。上記のコメント内で記載された修正を適用後、無事にURLや引用を含んだ質問が表示されるようになったことを確認できました。


余談ですが、OSQAのMLやITSがあまり活発じゃないのが若干気がかりです。現在v1.0へ向けて開発が進んでいるらしいですが、v0.9 pre3から既に1年近く。。開発陣のやる気は大丈夫かな?

SilverlightでShift JISのファイルを作りZipとして保存する

SilverlightでもShift JISでファイルを出力できるよ、というお話。

仕事でSilverlightの業務アプリを作っています。以前、数十KB程度のファイルをZip化して保存したいという要望があり、その時はクライアント側からASP.NETのWebページに対してformを用いてPOSTを行い、サーバ側でDotNetZipを利用したZip化を行なっていました。

このファイルの中身自体はクライアント側の処理で作られるものなのですが、以下の理由により、わざわざサーバへ中身を送信し、そこからユーザにダウンロードさせるという手間を踏んでいました。

  • SilverlightにはEncoding.GetEncoding()できるようなShift JIS用エンコーディングが用意されていない
  • SaveFileDialogはユーザ操作により発動するイベント内でしか使えない。

1つ目の理由はSilverlightで開発する際におそらくよく悩まれるところです。2つ目の理由はボタンを押す画面と、結果を吐く画面が違うというアプリの性質上、MVVMを用いてMessengerを飛ばしたりしているために問題となります。(たぶん。解決方法があるのかもしれませんが)

ですが、今回数十MBのファイルをZip化することとなり、この方法ではASP.NETのWebページが504エラーを返すようになりました。そもそも日本に置かれるWebサーバに対して海外からアクセスする際の通信データサイズが問題となっていたため、ある程度大きなサイズを持つクライアント側のデータはクライアント側でZip化したいというのは自然な要求となってきます。

そこで、以下のように仕様変更を行うことにしました。

  • Shift JISへなんとか変換する
  • ファイル用データを生成した後で、「保存」ボタンを出して押してもらう

2つめは最初からやっておけよ、という話かもしれません。今までは生成→DLが一括した処理でしたが、「保存」ボタンを表示する場所がデザイン上存在すれば、こちらのほうが処理を分割できるという意味でも良さそうです。(ユーザから見れば手間は増えますが。。)

問題となるのは1つめです。Stack Overflowなんかでもこの問題はいくつか取り上げられていて、変換テーブルを用意して自作しろ的な答えがのっていました。たぶん誰か作ってるんじゃないかなと思い調べたところ、ありました!

SilverlightでシフトJIS文字列を扱う

修正BSDライセンス。配布されているcsファイルをプロジェクトに取り込むなりして利用できます。これを用いてstring型のデータをShift JISに変換してbyte[]型を得、DotNetZipからSaveFileDialogのStreamに流すことで、無事にZipファイルをユーザが保存できるようになりました。

 

余談: ところで、ExcelはBOM付きのUTF-8なら文字化けせずにCSVファイルを読めるとか。。これExcel 2000とかでも大丈夫だろうか。

SilverlightでExcel用のCSVファイルを出力する -wave1008の日記

ExcelでUTF-8のCSVを開く方法 (CodeZine編集部ブログ)

Webkit系ブラウザでMoinのGUI編集を行うと保存、プレビューが行えない

遊びで運用しているMoinMoin製Wiki(v1.9.3)があるのですが、その数少ないユーザから「Internal Server Error」が出る、と言われて調べていました。

エラーログを見たり、バグを再現させようとしたり、ググったりしているうちに、どうもv1.8以降のMoinではWebkit系ブラウザ(SafariとかChromeとか)で新規ページをGUI編集を行うとプレビューあるいは保存時に上手くいかなくなるとわかりました。jsファイルでGUIエディタの初期化まわりに失敗するようです。

MoinMoinBugs/1.9.3GUIEditorInWebKit - MoinMoin

幸い、パッチが出ていたので、当てて終了。

普段Firefoxしか使わないし、GUI編集もしていなかったので、なかなか原因にたどり着けませんでした。そういった際に、環境依存の不具合そうだなと目星をつけるスピードが欲しいところです。。

新しい教育コンテンツの可能性、Udacity

最近、米国ではオンライン教育が高まりを見せているように感じます。CodeAcademyが注目されたり、MITの無料オンライン講義が3月から始まる(単位も出るみたいです)、といったように2012年は教育分野がちょっとしたことになるのではないか、と期待しています。

その中でまた1つ、Udacityという新しい教育コンテンツを模索する試みがあり、実際の講義がいよいよ今週から始まりました。これは大学レベルの講義を低コストで実現しようという試みで、スタンフォード大でロボティクスを研究する3人によって設立された無料のオンラインコンテンツになります。

Udacityの前身となるAIのオンライン講義は昨年実施され、190カ国以上から16万人もの受講者を集めたそうです。大半が所謂発展途上国からの参加であったことなどが彼らの興味を引いたのは間違いないでしょう。

さて、話を本筋に戻しますと、Udacityの立ち上げに際し、2つの講義が用意されています。(2012年中に、さらに講義が増える予定)

  • CS101: 検索エンジンを作る
  • CS373: AIカーを作る

受講者は毎週更新される授業内容をオンライン上で受講します。授業は数分程度の動画を見て、たまに出てくるクイズ(選択しを選ぶ形式と、実際にコードを書く形式があります)に答え、また動画を見て、というくり返しで行われます。だいたい1回の講義で2,30程度の動画が用意されているようです。きちんとこなすと1週間に2時間程度の学習時間が必要となるのではないでしょうか。

とはいえ、わからないところは何回も見直せるのと、1つ1つの動画が短いので、1回にまとまった時間を取れないよ、という忙しい社会人の方でも毎日少しずつ取り組むことができます。

また、各講義の後に宿題が用意され、一定期限内に回答することが求められます。この宿題の正答率がそのまま講義の最終成績に反映されるという仕組みです。(先のクイズは成績に反映されません)

あいにくと講義は全て英語で進みますが、リスニングが苦手でも講義ノートが配布されているので、技術英語に頻繁に触れざるを得ないソフトウェア業界の人間としては全く問題がないのではないかと思います。

尚、使用されるプログラミング言語はアメリカの大学らしくPythonです。CS 101の方はPythonを知らない前提で話が進むので、プログラミング未経験の人でもついていけるかもしれません。

面白い取り組みですし、こういった分野は日本でも注目されているのではないかと思います。そんなわけで、日本からの参加者が1人でも増えることを期待して、はてブロの初記事として取り上げてみました。