タグ

ブックマーク / qiita.com/shibukawa (19)

  • Pythonならわかるシステムプログラミング - Qiita

    pyspa Advent Calendar 2021のエントリーです。昨日は@kuenishiさんでした。 どんなプログラミング言語でも、最終的にはOSへのシステムコールとなってプログラマーがやりたいことを実現しています。文字列をコンソールに出したり、ファイル入出力、ネットワーク入出力などなど。Goの場合Goならわかるシステムプログラミングというがありますね。もちろん、みんな一人10冊ずつぐらいお買い上げのことだと思いますが、せっかくなので他の言語でも見てみましょう。 ここで扱うのは先日、TIOBEインデックスでプログラミング言語の人気No.1になったPythonです。 ただし、Pythonでメインの処理系のCPythonではなくてPyPyで見ていきます。理由は後から説明します。 PyPyのコードは次の場所でホストされています。 早速、次のコードの中身を見ていきましょう。 print()

    Pythonならわかるシステムプログラミング - Qiita
  • Zipの内部で使うアルゴリズムを独自のものに切り替える - Qiita

    Goarchive/zipパッケージは、圧縮のアルゴリズムをいじることができます。もともとのzipのファイルフォーマットには、圧縮メソッドを識別する、2バイトのフラグを持っています。現在の仕様で登録されているフォーマットは以下の通りです。標準のDeflateが8番です。 0 - The file is stored (no compression) 1 - The file is Shrunk 2 - The file is Reduced with compression factor 1 3 - The file is Reduced with compression factor 2 4 - The file is Reduced with compression factor 3 5 - The file is Reduced with compression factor 4

    Zipの内部で使うアルゴリズムを独自のものに切り替える - Qiita
  • 2019年末版:Chromebookを開発に使う - Qiita

    PySpaアドベントカレンダーのエントリーです。昨日はYesterdayでした。今日はTodayです。 ずっと開発や普段使いで使えるChromebookが欲しいと思っていました。勉強会の発表で使ったりするので、きちんと技適が通ったやつで、性能がまとも(以前ATOMベースのマシンにLinux入れたけど遅くて使う気になれなかったので)なやつを待ち望んでいました。 7月ぐらいからHPがChromebookを販売開始してくれました。気づいてから申し込んだものの、予想外に受注があったのか、納期が伸びに伸びて1ヶ月半近くかかりましたが、とても良いものだったので、今ではすっかりメインで使っています。 バージョンによって状況はまた変わってくるかもしれないので、タイトルに日時を入れました。これを書いた時点でのバージョンは78.0.3904.106(Official Build)(64 ビット)でした。 日

    2019年末版:Chromebookを開発に使う - Qiita
  • イマドキのJavaScriptの書き方2018

    PySpa統合思念体です。これからJavaScriptを覚えるなら、「この書き方はもう覚えなくていい」(よりよい代替がある)というものを集めてみました。 ES6以降の難しさは、旧来の書き方にプラスが増えただけではなく、大量の「旧来の書き方は間違いを誘発しやすいから非推奨」というものを作り出した点にあります。5年前、10年前のやウェブがあまり役に立たちません。なお、書き方が複数あるものは、好き嫌いは当然あると思いますが、あえて過激に1つに絞っているところもあります。なお、これはこれから新規に学ぶ人が、過去のドキュメントやコードを見た時に古い情報を選別するためのまとめです。残念ながら、今時の書き方のみで構成された書籍などが存在しないからです。 たぶん明示的に書いていても読み飛ばす人はいると思いますが、すでに書いている人向けではありません。これから書くコードをこのスタイルにしていくのは別にいい

    イマドキのJavaScriptの書き方2018
  • GraphQLは90%のウェブサービス開発者にはまだ時期尚早ではないか - Qiita

    PySpa統合思念体です。チャットで話をしたことのまとめです。何人かで雑に話をしたことのまとめで、特定の誰かの発言というわけではなく、一種の怪文書です。 さて、GraphQLが世間を賑わせ始めています。Facebookが開発し、GitHubも機能提供をし始めました。GraphQLはRESTの未来か?みたいな論調もありますが、新しいものが出てくると既存のものをサンドバックにして「まだそんな古いの使ってやがるのかよwwwww」みたいな煽りをするのはもはやウェブ界隈の風物詩になっていますが、そういう信者発言をして「ああ、あいつまた踊らされてるな」「あいつ技術を見る目がないな」みたいに思われないように、少し冷静にGraphQLの立ち位置や、今後予想される流れについて考えてみます。 LSUDsとSSKDs WebAPI The Good Partsでも紹介されていた概念として、Netflix社のAP

    GraphQLは90%のウェブサービス開発者にはまだ時期尚早ではないか - Qiita
  • GraphQLは90%のウェブサービス開発者にはまだ時期尚早ではないか - Qiita

    PySpa統合思念体です。チャットで話をしたことのまとめです。何人かで雑に話をしたことのまとめで、特定の誰かの発言というわけではなく、一種の怪文書です。 さて、GraphQLが世間を賑わせ始めています。Facebookが開発し、GitHubも機能提供をし始めました。GraphQLはRESTの未来か?みたいな論調もありますが、新しいものが出てくると既存のものをサンドバックにして「まだそんな古いの使ってやがるのかよwwwww」みたいな煽りをするのはもはやウェブ界隈の風物詩になっていますが、そういう信者発言をして「ああ、あいつまた踊らされてるな」「あいつ技術を見る目がないな」みたいに思われないように、少し冷静にGraphQLの立ち位置や、今後予想される流れについて考えてみます。 LSUDsとSSKDs WebAPI The Good Partsでも紹介されていた概念として、Netflix社のAP

    GraphQLは90%のウェブサービス開発者にはまだ時期尚早ではないか - Qiita
  • pyenvが必要かどうかフローチャート - Qiita

    pyspaの統合思念体の渋川です。 「pyenv使いましょう!」系の記事、全部ゴミ — Yoshifumi YAMAGUCHI (@ymotongpoo) September 29, 2016 これはpyenvがダメではなくて、pyenvをとりあえずインストールしておきましょう記事がダメという意味だそうです。すでにとんぷーが5年前にこの問題について書いています。これを読んで分かる人には不要です。 この記事では「便利」と「必要」は分けて考えています。後者にフォーカスしています。 前提知識 Environment Isolation Tool(環境分離ツール)というカテゴリの開発補助ツールがあります。pip install Sphinxとか書いたら、ライブラリはグローバル空間に入っちゃいます。複数バージョン入れられません。そんなときに使うのが、この環境分離ツールです。最近はいろいろな言語がこれ

    pyenvが必要かどうかフローチャート - Qiita
    rokujyouhitoma
    rokujyouhitoma 2016/09/30
    "pyenvがもたらすネガティブな側面" “あと、一番悪いのはAnacondaです。みんなissueをあげましょう。”
  • Go最後の秘宝「GUI」を探しに行く - Qiita

    Golangができること、むしろ「得意」と言われるものはすでにたくさんあります。 クロスコンパイルが得意だし依存が少ないバイナリができるから、いろんな環境で使えるコマンドラインツールを書くにはGoがいいよ パフォーマンスが高いし文字列処理もやりやすいので、高速なAPIサーバが得意。gRPCでもHTTP/2でも Webアプリケーション・フレームワークも増えてきていてウェブサービス作れるよ ビルドシステムとパッケージマネージャ内蔵なので、gitから簡単にパッケージをダウンロードしてきたり、◯makeコマンドとか◯runtとか◯owerで消耗しなくて済む gopher.jsでJavaScriptにもなる 逆に今まであまり良い解がなくて、「Goにはちょっと不向きだね」と言われ続けていたのがGUIです。鳴り物入りで出てきたGXUIが開発が止まってしまい、それと同じぐらいにshinyというものが開発が

    Go最後の秘宝「GUI」を探しに行く - Qiita
  • 井戸端PySpa - Qiita

    PySpaというコミュニティがあります。 元は6-7年以上前ぐらいからPythonやDjangoあたりで集まった人たちが継続的につながっているような感じです。今は主にチャット上でつながっています。昔はSkype。今はSlack。 プライベートを犠牲にして勉強することについて、5年前に考えたこと 個人ブログの方にもちょっと前にも書きましたけど、5年ほど前に出版させてもらった、つまみぐい勉強法は、半年に一回ぐらいはこのに書いたような話が炎上したりして「前にもこういう話を聞いたことがあるなぁ」と思う程度に今でも使えるネタが書かれています。 勉強会と効率 企画段階からnomicoxさんと話題にしていたのが「勉強会疲れ」です。週末は当然のこととして、平日の夜、場合によっては朝も勉強会漬けにして、忙しそうにしているけど、傍目から見てまったく成果が出ていないように見える人もちらほらいました。 偉い人の

    井戸端PySpa - Qiita
  • Unreal Engine 4で極めるゲーム開発本を、新しいバージョンでトライするためのTips集 - Qiita

    Unreal Engine 4で極めるゲーム開発はとても良いです。Unreal Engine 4の使い方だけではなく、幸せなゲーム開発のワークフローなどが学べます。書で扱っているエンジンのバージョンは4.7ですが、4.9で試したところ、の通りにはいかなかったこととかもあったので、4.9でUE4極を読み進めるための差分について紹介していきます。25章ぐらいからは4.10で実行しています。 12/26追記 しばらく他の活動で1ヶ月ぐらい間が空いてしまいましたが書籍の最後まで行きました。29章は4.7と4.10で差分はありませんでした。引き続きPDFの方も進めていきます。 8.3.1 ブラシをブロッキングボリュームに変換する ブロッキングボリュームに変換すると、見えなくなると説明にありますが、4.8と4.9、4.10では表示されちゃいます。これはバグです(報告済み)。 Buildメニュー

    Unreal Engine 4で極めるゲーム開発本を、新しいバージョンでトライするためのTips集 - Qiita
  • オブジェクト指向言語としてGolangをやろうとするとハマること - Qiita

    埋め込み(embedded)に要注意というお話です。あるいは、GolangC++のようなゼロオーバーヘッドを目指していると考えれば腑に落ちるよね、的な。 Goはオブジェクト指向言語っぽく使うことができます。次のような機能を提供しています。 interfaceを使ったコーディング 埋め込み(embedded)を使った実装継承 インタフェースは次のような感じです。 // ポニーは歩ける type Pony interface { Walk() } // アースポニーも歩けるので、Ponyインタフェースに渡せる type EarthPony struct { } func (ep *EarthPony) Walk() { fmt.Println("歩くよ") } インタフェースはメソッド宣言しかかけません。実装は書けません。でも、定義されたメソッドを持てば、それはすべて「これの仲間だ」という感

    オブジェクト指向言語としてGolangをやろうとするとハマること - Qiita
  • Google Apps Scriptで今どきっぽい社内向けウェブアプリを作る - Qiita

    今どきっぽいというのは、各種JavaScriptライブラリを使うという意味です。ここでは、Bootstrapと、Knockout.jsを使ったサイトを作ってみます。 HTML Serviceの強化 @dz_ さんの記事のCheck! Google Apps Script - UIの実装は HtmlService + Polymer の利用が主流に?に書かれているように、Google Apps ScriptのUI周りに少し手が入ります。 今まではUi Serviceというのを使っていた。JavaとかC++GUIフレームワーク的な仕組みで、サーバサイドでUIのパネルとかボタンとかラベルを作り、コールバックも定義してあげる仕組み。ただし、生成されるHTMLHTML 3.2的なテーブルレイアウトだったりするのはご愛嬌。ただし、6/30で終了。 今後はHTML Serviceというものがメインに

    Google Apps Scriptで今どきっぽい社内向けウェブアプリを作る - Qiita
  • シリアライズフォーマットに関する所感 - Qiita

    このエントリーはポエムです。 msgpackにschemaがないと使いものにならないとい言う人がjsonについてどのような意見をお持ちなのか聞きたい — tagomoris (@tagomoris) July 27, 2015 JSONはプレーンテキストで読み書きできて、RFCで標準化されてて、多くの処理系で標準サポートされているというのは強みですね。特に、E4Xが死に絶えた今、ブラウザという環境がネイティブで対応しているのがJSONしかない、という意味でもJSONはオンリーワン。後付ではあるものの(とはいえ、XML Schemaですら後付けなので後付けがデメリットではない)、色々な言語環境にポートされているJSONスキーマもあるので、固くしようと思えばできる。といってもウェブのAPIの出入口ぐらいでしか書こうというモチベーションはわかないし、それであまり困ったこともない。 JSONと比べ

    シリアライズフォーマットに関する所感 - Qiita
  • OracleとGoogleの判決文を斜め読む - Qiita

    (7/7追記)僕は斜め読みだったんですが、もっときちんと読んだ上で解釈を書いてくれている方がいます。僕も時間をとって全文を読みたいとは思っていますが、まだ時間がかかりますし、yudaiさんの会社の方が妥当性は高いと思いますので、そちらをご参照ください↓ 朝っぱらから色々衝撃が走った第一四半期の最終日ですが、OracleGoogleの裁判について、どのあたりが問題だったとされるのか気になるので判決文等を読んでみました。 経緯 2010年8月、OracleGoogleを訴える。当初の争点は特許侵害 (publicKey1) 2012年4月、サンフランシスコ連邦地裁の法廷開始 2012年5月、Googleの特許侵害はないとの陪審評決。ただし、フェアユースは意見が別れる。 2012年6月: OracleGoogleJava/Android訴訟、損害賠償金ゼロで合意。今回議論された37件のJ

    OracleとGoogleの判決文を斜め読む - Qiita
  • Polymer 1.0の挙動変更の影響 - Qiita

    Polymerの1.0がリリースされました。今回は、AndroidAndroid Ware、IoTの比重が大きく、ブラウザ関連の発表が少ないGoogle I/Oでしたが、Polymer 1.0はその中の貴重な発表の1つでした。 Polymerとは何か? Polymerはフレームワークではなく、さまざまな他のフレームワークの「下」で使える拡張可能なHTMLのレイヤーです。コンポーネントという言葉やコンポーネント的なものはMithril.jsやReactAngular.jsさまざまなWebMVCで登場しますが、コンポーネント同士の互換性はありません。WebComponentsはコンテナ船のコンテナ的な、どこでも使えるコンポーネントを提供します(コンテナ船のメタファーはGoogle I/Oの説明から)。 1.0は0.5とくらべて、Chrome上で3倍、Safari上で4倍になっているとのこと

    Polymer 1.0の挙動変更の影響 - Qiita
  • 最速MVCフレームワークMithril.jsの速度の秘密 - Qiita

    Mithril 0.2が日リリースされました。ちょっとURLが変わったり( http://mithril.js.org/ )、API名が一部(m.moduleがm.mount)変わっていたり、コンポーネント機能がコーディング規約レベルから、専用のサポートAPIが追加されたりしていますが、0.1系と大した差はなさそうです。 某node.js会長とはいろいろ社内で話をしたりしたのですが、各種ベンチマークでもトップクラス、平均的には最速のクライアントサイドMVCフレームワークという称号を持ちながら、国内ではまだまだ知られていないMithril。レンダリング速度は仮想DOMの代名詞となったReact.jsの5倍以上(ベンチマークによります)です。 ↓ホームページから転載 ちなみにこちらのベンチマークで計測すると、MithrilはReact.jsの10倍以上速い結果になるのですが、これはちょっと計

    最速MVCフレームワークMithril.jsの速度の秘密 - Qiita
  • encodeURIComponentが世界基準だと誤解してた話

    URLをいじくるプログラムをいじっていて、仕様がよくわからなくて悩んだのでまとめます。 2/23: 追試部分を追記 2018/7/14: JavaScriptのURLSearchParamsと、GoのPathEscapeについて追記 ことの経緯 HTTPとはなんぞやとか、GETとPOSTがどうの、それぞれでパラメータがどういう経緯でウェブアプリケーション(とかCGI)に渡って来るのかぐらいは知っていました。で、ウェブでXHRでGETリクエストを送る場合にはJavaScriptのencodeURIComponent()で各パラメータをエンコードして、&でくっつけて、URLの末尾に?で付与すればいいんだよね?と思っていました。こんな感じに。 var finalUrl = [url, "?", encodeURIComponent("key"), "=", encodeURIComponent(

    encodeURIComponentが世界基準だと誤解してた話
    rokujyouhitoma
    rokujyouhitoma 2015/02/24
    よいまとめ
  • Goのプログラムをパッケージに分ける方法 - Qiita

    注意(2017/03/29): これはもうだいぶ古い情報です。githubなどのパッケージをバージョン固定で保持する方法としてはvendoringが1.5から入り、1.8時代には純正ツールとしてdepがでてきました。depはそのうちバンドルされるでしょう。dep以外のツールも過去ありましたが、過去の話なので、これからの未来を生きる若者はdepだけを見ていきましょう。 Goはパッケージの仕組みを持っています。最初は何も考えずに package main と先頭に書いてコードを書いていけばいいのですが(ライブラリ以外)、中規模のアプリを作るようになってきて名前空間を分けたくなったら、この仕組みの力を借りることになります。 試行錯誤の仮定を野良パターンっぽく書いてみます。実際にこの順番でコードを修正していくことになると思います。それぞれの項目にはパターンランゲージの「フォース」っぽく前提を書いて

    Goのプログラムをパッケージに分ける方法 - Qiita
  • JSX + npm - Qiita

    JSXそのものにはPyPIやCPANのようなモジュールリポジトリはありません。ですが、npmを使って管理することができます。JSXではJavaScriptのコードのラッパーを定義したりもするので、npmで対象となるJSモジュールも一緒に管理できるようになるので、npmを使うのが一番理にかなっています。このエントリーでは、npmを使ってモジュールを管理する方法について説明します。JSXを対象に説明しますが、npmを使いたいaltJS全般、あるいはスのnode.jsでも役に立つかもしれないお話です。 やり方は簡単です。package.jsonを使って必要なモジュールを書いていくだけです。

    JSX + npm - Qiita
  • 1