スキップしてメイン コンテンツに移動

投稿

2015の投稿を表示しています

Go:GoでWebAppを作る上で足りないもの…

どうもこんにちは、 @CreatorQsF です。 最近は寒くなりましたねぇ。おかげさまでサーバーがお熱いので部屋はそんなにですが。冬はまだいいね(ΦωΦ)フフフ… さてさて、最近は開発にGoを選択する日本企業も増えて来ました。やっと、というか、海外に比べて約1年半ほどの遅れでしょうか? まぁ海外が全てではないとは思いますが…どうにか、大企業ほど積極的に新しいもんを取り入れる新風を日本に巻き起こしてほしいものです。そうすると批判がっていうのはなしで。 でも一つ私きになることがあるんです。GoでWebAppを作るとき、みなさんdaemon化はどうされているのでしょう?? あまり気になる方もいらっしゃらないようで、ネット上にはチラホラしか情報がなく、syscallを使ってgoroutineと相性ガガガとか、takamaさんのdaemonを使うとかいろいろあるようではありますが、そのどれもが微妙な気がします。僕としては…GAEのような、そういう感じでGoでdaemon/webappができると嬉しいのですが。 …だったらGAE使えよって言われそうですけど…w

Tips:iPhoneでコーディングしよう

iPhoneでコーディングするというのは長年の夢です。電車の中でChromebookを出すのは気が引けますから… しかし、たいていのそういうものはスペックや手が届かないとか不満店が多いものです。 そこで、良いサーバーを借りてそこで開発するという手法をとりましょう。わたしはこれを、PrivServer(プライベートサーバー)と呼んでいます。普通かw これはChromebookからでも開発できるし、どこからでもいくらでも好きなだけすごいスペックの環境がネット環境さえあれば立ち上がるってのがものすごく、いいです。 エディタはわたしはvimなので問題なしです! さてさて!この状況で、iPhoneで、コーディング作業は、一体どんなアプリが便利でしょう。 ご存知の通りvimはescをよく使います。またサーバーではctrlもよく使います。したがって便利なキーボードが必要です …が、いまのところこんなキーボードは見つかっていません。Androidだとhacker's keyboardがいいのですが。 そこでこのsshアプリ Crystalnix「Serverauditor - SSH Shell / Console / Terminal」 https://appsto.re/jp/K8AUG.i 良いですこれ。何がいいって、設定から音量ボタンにescやctrlといったキーを割り当てられるんです。 このおかげでかなりはかどってます。まあ画面は小さいですが… ただ日本語の扱いは下手ですので要注意。わたしは使いませんが。 また、ターミナル部分を一回タップするとスクロールして読めるようになり、その際にURLがあるとタップしてそこに飛んでくれたりするめちゃくちゃ便利機能付です。まるでvimのモードの考えがsshクライアント自体に埋め込まれた感じ。 それでは。

Hot:GoのAppがAzure App Serviceでサポートされました!

GoGoは踊れない@CreatorQsFです。 大きなニュースが発表されました。 MicrosoftのSaasであるAzure App ServiceでGoのアプリケーションがサポートされました。 https://azure.microsoft.com/en-gb/blog/running-go-applications-on-azure-app-service/ Goのバージョンは最新版だそうです。また幾つかの人気Goフレームワークもサポートされるということで、かなりたのしみです!

Tips:Bloggerでナウいコードハイライトをしよう!

注!:なういってのはバズワードです!!!!! こんにちは、お久しぶりです、@CreatorQsFです! やはりWebからコンテンツが更新できる、こういう安定したサービスは書きっぱなしにできるんでいいですね!しばらく独自CMSにこだわってきましたが、そろそろBloggerに落ち着く時なのかもしれません:) さてさて、タイトルにあるとおり、なんかコード貼るのがいまいちかっこよくなかったので(それと前回の記事わりとPVがいったってのはあります、私のような未熟者でもじゅようあるんですか!ってのが正直なところです)もうすこしわかりやすくするためには。 Gistってご存知ですか?GitHubがやっている、ソースコードをリポジトリはらずにメモ帳みたいに貼り付けておけるサービスです。 これ最近気に入って使ってるんですが、Bloggerに貼る方法ってのを考えようかなと。 ちなみにこちらが完成形です↓ さて、どうやってやるかというと、 gist.github.com を開く コードを貼る Create Public Gistをぽちっ Embed URLをコピ Bloggerに戻りHTMLモードに切り替え貼り付け、ぺたっと できた😁 簡単簡単。むしろへんにBloggerだけで完結させようとするよりも簡単でいい。かなりいいなぁ。これから私はこれでいきます( ・ิω・ิ) おわり

NULLのcolumnを含むDBでデータを取得する/Golang

どうも、@CreatorQsFです。我が家にもやっと春が舞い戻ってまいりました。 さて、僕はもともとCとPHPとMySQLでサービス作ってた人です。そんな中で世紀末ぐらい困ったことが会ったので記しておきます。 まず、PHPでの時わたしはDB関連は全て自作していました。これでも一応SQLかけるので。 ですが、Goに変えてからgithubなどのLibraryを積極的に使うようにしています。フレームワークも今はrevelを使ってます(╹◡╹) そして、当然のごとくgorpを使いはじめるわけなんですが…これが意外と難しい。というよりPHPの成り上がり下克上果たせなかった系Goプログラマには結構問題点が多くて。私自身にですが。 まず、DBを使うのに、structと組み合わせるためにマッピングしなきゃならない。いや正確に言うと、今まではDBから取得したらそれが自動的にオブジェクトに落とし込めていたので、なんか気にすることなかったんですな。 だけど、最近のモダンなやつ見てるとどうもそうでもないらしい。構造体を作ってそこに落としこむのが主流なのかな。 ってことで、やってみたのはいいものの… …動かないっす先輩。 思ったとおりに行かないっす 原因は、MySQLのcolumnにNULLが含まれているためでした。そこで、sql.NullStringの存在を知ります。 で、それを   for _, l := range list {     p := l.(*models.A)     fmt.Printf("%d,%t, %s\n", p.Id,p.Status,p.Url)               } こんなかんじに調理したとします。 この青四角のところが大問題なわけで、最初こう書きました。 result string = p.Url そうすると、みんな大好き型エラー。 で、次にこう。 result string = fmt.Sprintf("%v",p.Url) いや、動いたんですけど…。問題はそうじゃなくて、吐出されたものがめちゃめちゃに汚い。オエッの方じゃなくて。 で、なんじゃこりゃと思って、次...

GoogleAppsEngineでのGolangが神だった。

どうも、改めまして@CreatorQsFです。やっぱりGolangキてますね〜。 というわけで、今日はGolangをGoogleAppsEngine(通称GAE)で動かす方法や、その真髄をここに書きたいと思います。 ちなみに、どちらもGoogle開発のものなので、とても仲が良いです。(といいつつついこの前まで、この2つの関係はbetaでしたw) というわけで、まずは簡単に環境開発から。 環境開発 まずは こちら から、GoLangのAppEngineSDK(Golangをwebアプリケーションとして簡単に動かすためのもの)を落としてきます。 自分の環境にあったものを落としてください。自分がどれを落とせばいいかわからない人は、Twitterで@CreatorQsF宛に聞くか、Hangoutで私まで。 で、こちらをダウンロードしてきたら、ダウンロードフォルダよりFinderで好きな場所に移動して、展開してください。 で、展開したらそのDirectory名を抑えてください。たとえば、ダウンロードフォルダで展開したなら、/Users/あなたのMacのユーザー名/Downloads/go_appengineです。ここではこれを、「展開したディレクトリ名」と呼びます。 で、そうしましたら、自分のホームディレクトリ(/Users/あなたのMacのユーザー名/)に.bash_profileというファイルを作ります。というより、golangの環境を作った時に多分bashrcだかなんだかがあると思うので、そこに先ほど抑えた「展開したディレクトリ名」をこのように書き込みます。 export PATH= 「展開したディレクトリ名」 :$PATH つまり、Downloadsで展開した人は、 export PATH=/Users/あなたのMacのユーザー名/Downloads/go_appengine:$PATH というわけです。 で書き込んだら、Terminalでこのパスを通すために source ~/.bash_profile (ここは適宜)を実行します。 で、そこまで来たらもう終わったも同然です。 なにかプロジェクトを作ってみたいですか? HelloWorldやってみよう テキトウなディレク...

GoのフレームワークRevelを使ってみて引っかかったこと

こんにちは。@CreatorQsFです。 今日はGoLangのWebFrameworkを使ってみたいと思います。 結構大量にqiitaとか情報あるので、ダウンロードしたりするところは自分で調べてください。 一番引っかかったところの紹介をします! <br>が使えない? たとえば、こんなコードを書くとします。 func (c App) Index() revel.Result { return c.Render(stars) } で、てっきりstarsにbrを挟んだら表示されるものだと思って、starsはこうしました。 var stars string = "Hello<br>World!" そうした結果がこちら Hello<br>World! お分かりだと思いますが、そのまま表示されますw ""で囲まれた<br>がひかりますね(-д☆)キラッ で、コード中で<br>を使えないのは痛いので、頑張ってみることにしました。

Goでの同じ文字の連結について

おばんです。 @CreatorQsF です。夜はながいですね。 普段なら、PHPで書くと、同じ文字列の連結ってどう書いてます?みなさん。 たぶんPHPerならこう書くんじゃないかなーと。 <?php   $str = "★";   print $str2 = $str + $str; はい、何の問題もなく、実行結果はきっと、「★★」ですね。 そう、文字の連結に + を使うのです。 ですが、じゃばーとかならわかると思うのですが、このやり方ってとっても非効率なんですよね!私Java触ったことないですけどw 文字列のためのオブジェクトが必要以上に生成されるのを防がないともったいないんですよね〜。 というわけで、「ばっふぁ」に挑戦します。ルーターの会社ではないですよ。 まずコード package main import (   "fmt"   "bytes" ) func main() {   var buf bytes.Buffer   for i := 0; i < 繋げたい個数 ; i++ {     buf.WriteString(" 書きたい文字 ")   }   print buf.String() } 私はこの方法をおすすめします。 なんでこれがいいかって言うと、プログラムに無駄がなくなるからです。より速く、より軽いプログラムに成るって感じかな〜。 間違ってるかもしれません。なにせ初心者、一週間前にGoの世界に入ったばかりなので……そうしたら指摘してくださいm(_ _)m

GoのHelloWorld!

どうも。de-liKeRというブログで普段は書いてます、 @CreatorQsF です。 知ってる人は知ってるのかな。 さて、本日より、私、GoLangの魅力に触れて感動したので、作っているプロジェクトとwebアプリをPHPからGoへ移行することを宣言いたします。 構文と仕様はいろんなところのを引っ張ってきた感じで、その際にCを学んだ時みたいにアウトプットする場がほしいので、こうして作りました。 よろしくお願いします。 さてさて、ではインストールから説明。 how to install go lang on mac? 説明ってほどでもないです。 普通にHomebrewで、 brew install go sudo install Mercurial を叩いてください。(MercurialはなんかGoに必要らしいです。) で、bash_profileでもなんでもいいのでパスを通しまーす export GOROOT=`go env GOROOT` export GOPATH=$HOME/ ホーム以下好きなディレクトリを指定し給え。 export PATH=$PATH:$GOROOT/bin:$GOPATH/bin でこれでインストール自体は終わり。あとでRevelについては書きますのでとりあえず動くかどうかだけ。 テキトウなところに、test.goってファイルを作ります。 中身こんなかんじで書いて下さい package main import fmt "fmt" func main() {   fmt.Print("Hello World!") } これで終わり。めっちゃ簡単♪ であとはTerminalから cd test.goがあるディレクトリ go run test.go でほんとに、めっちゃ高速で結果が表示されます。スクリプト言語並みです。 ってなもんです。質問あったら是非おきがるにHangoutかGoogle+へどうぞ。