Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
はじめに 筆者が以前書いた「簡単な式の評価機を作ってみる」や「【実践goパッケージ】文字列から複素数型の値をパースする」などの記事では、文字列で表された式から抽象構文木(AST)を取得し、ASTのノードの種類ごとに再帰的に処理する関数を書きました。 この記事では、go/astパッケージに用意されている、ast.Inspect関数やast.Walk関数を使って、ASTをトラバースする方法について解説します。 なお、ASTを取得する方法については、「ASTを取得する方法を調べる」という記事を書いていますので、そちらを参考にしてください。 この記事で扱っているGoのバージョンは1.7.4です。 ast.Inspect関数 ast.Inspectは、ASTを深さ優先でトラバースする関数で、以下のようなシグニチャを持ちます。
(元々Gistにメモ的に書いていたが後から追跡しにくいので転載した) golangweekly.com が http://golangweekly.com/issues/140 にてBest 2016をまとめていた.便乗して自分なりに今年良かったものをまとめてみる.https://blog.golang.org/ は除外している.あくまで「自分が良かった」ものである. まずgo-kitのPeter BourgonのGo best practices, six years inとBoltDBのBen Johnsonが標準パッケージを詳細に語るGo Walkthroughシリーズ https://medium.com/go-walkthrough はMUSTである.これらの知見を知ってるだけでだいぶ良いコードが書けるのではないか. 今年はGo1.6とGo1.7がリリースされたがruntimeの
ディップ Advent Calendar の最終日の記事です。 本記事では、Laravel5 にデフォルトで設定されている Middleware について書きます。 どんな機能がデフォルトで動くようになっているかを知ることで、Laravel アプリケーションをより効率的で高速に動かすことができるかもしれないという話です。 Middleware - Laravel - The PHP Framework For Web Artisans(Laravel 公式サイト) ミドルウェア 5.3 Laravel(日本語訳) Laravel に含まれるミドルウェア Laravel5.3 においては、下記の Middleware がデフォルトで設定されています。 ... protected $middleware = [ \Illuminate\Foundation\Http\Middleware\Ch
はじめに みなさん、メリークリスマス! 22日の枠に欠員が出たので、go/parserパッケージを使ってAST(抽象構文木)を取得する方法についてまとめたいと思います。 goパッケージについては、簡単な式の評価機を作ってみるという記事も書いているので、そちらもぜひ読んで下さい。 なお、この記事を執筆時点のGoの最新バージョンは1.7.4です。 ノード go/parserパッケージでは、いくつかのParseと名前のついた関数でAST(抽象構文木)を取得することができます。ASTの各ノードを表す型は、go/astパッケージで提供されています。そしてそれらの型は、以下のast.Nodeインタフェースを実装するように定義されています。 ast.Nodeインタフェースは、PosメソッドとEndメソッドを持ち、共にtoken.Pos型の値を返します。token.Posはノードのコード上の位置を表します
2019/07/07追記 結構前からSlackの仕様が変更されて動作しない状態となっております m(_ _)m 修正中です この記事はSlack その2 Advent Calendar 2016の25日目の記事です。 なんとか間に合いました・・・。 追記:バグを修正しました。 128px x 128px以下の画像でも正常に追加できるようになりました。 追記:gifとアニメgifに対応しました。 ただし、リサイズ後でも64KBを超えてしまうとアップロードに失敗します。 追記:予定とは全然関係なく複数ファイルのアップロードと複数チームへの同時アップロードに対応しました。 はじめに 以前にSlackのemojiの引っ越しを作り、emojiをアップロードするためのノウハウが出来たので、それを応用してemojiの追加をドラッグ&ドロップで出来たら便利なのでは、と思い作りました。 実は以前Rubyでも
メリークリスマス!(昨日) これはVue.jsアドベントカレンダーの記事です。 代打です。 僕は初日にサーバーサイドレンダリングについて書きましたが 今回もサーバーサイドレンダリングです。 今回の内容は本当は初日に書きたかったのですがずっとうまくいかずに悩んでいたけどつい昨日できたGoサーバでのSSR(サーバーサイドレンダリング)です。 GoでSSRをするメリットとしてまず一つにポータビリティです。 Node.jsもポータビリティはありますが、Goであればアセットもワンバイナリにまとめることができるのでバイナリを配置するだけでWebUIがあるツールも作ることもできるかもしれません。 そして、僕にとって1番のメリットであるApp Engine(GAE)でSSRができるようになります! SSRについては初日の記事を見てください! サンプルの実行 https://github.com/k2wan
この投稿はSymfony Advent Calendar 2016 25日目の記事です。 今年から日本Symfonyユーザー会に参加しました。花井です。 2016年に開催したSymfony Meetupを振り返ります。 Symfony Meetupとは? Symfony Meetup は Symfony を通じた交流会です。 コミュニケーションや情報交換の場としてご利用いただいております。 「Symfony を通じた」交流会ですから、Symfonyに限らずPHPやJSのフレームワーク、OOPなど、毎回幅広い話題についてLTや議論が繰り広げられます。 2016年Meetup開催カレンダー 今年は11回開催することができました。参加いただいた皆様、ありがとうございました。 また、会場をご提供いただいている企業の皆様、いつもありがとうございます。 |開催日|タイトル|開催場所(敬称略)|テーマ|
About reserved postingIf you register a secret article by the day before the same day, it will be automatically published around 7:00 on the same day. About posting periodOnly articles submitted after November 1 of the year can be registered. (Secret articles can be registered anytime articles are posted.)
こんにちは! 片手間JSerの者です! レガシーPHPの方から来ました! みんなPHPで動的な管理画面とか作りたいじゃないですか。私などは怠惰ななまけものですので、動的なページ、特にブラウザ側での動きがあるページを作るのはだるいなあ、とか思ってしまふわけですよ。 きちんと設計したアプリケーションも良いものなのですが、水は低きに流れると申しまして、Vue.jsは雑に動くコードを異常に簡単に書くこともできます。 PHPだけで片手間 スゴイ雑に、こんなページを作ってみます。これは、何かの商品の一覧と説明文を登録する画面ってことにします。 このコードの思想としては、一個づつ追加して保存すると最後に空欄ができるのでJavaScriptがなくてもコンテンツを追加するアプリケーションが実現できる!!! って感じです。 ソースコード: https://github.com/zonuexe/katatema
この記事は Go Advent Calendar 2016 最終日の記事になります。参加頂いた皆さんお疲れさまでした。 今年も昨年に引き続き、25人以上の方が「何か書きたい」と名乗り出て頂き、go、go2、go3 の3本(2年連続)、計75エントリが揃う事になりそうです。Go 言語の人気が高まってきているのが良くわかるアドベントカレンダーでした。 あらすじ 普段あまり表だった所には姿を現さないのですが、今年は builderscon 2016 に登壇させて頂きました。 とても新鮮な体験で、味わった事のない緊張の中、いろいろな反響を貰いました。いい体験が出来たと思います。ありがとうございました。登壇し終えて数時間はなんだか緊張のほぐれた変な感じを味わっていました。懇親会の時あたりでようやく皆さんとお話する事ができて Vimmer の皆さんと Vim 談義をしてきました。 その懇親会で香り屋さ
Aspect Weaving with DDD 今年はLaravel界隈でもDDDの話題が目立つ様になりました。 データベースなどのストレージへのアクセスを抽象化させる目的で、 リポジトリパターンを利用するケースが増えてきたのではないかと思います。 ビジネス領域に焦点を合わせて設計を行うため、 当然ながら、みなさんがそれぞれ開発するアプリケーションでは どれがEntityとなるのか、ValueObjectはどれになるかは大きく異なり、 アプリケーションごとにDomain Serviceは大きく変わるのをよく目にすると思います。 そんなモデリングの世界において、 データベースのトランザクションや、ロギング、キャッシュといったビジネス領域に当てはまらないケースが多いものはどの様に分離するべきでしょうか? feature 開発に入る前に仕様や、ストーリーなどを記述することが多いと思います Sto
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに GoはC言語やその後のオブジェクト指向言語における課題をシンプルな手法で解決しており、大変使い勝手の良い言語になっています。 具体的にはC言語と比較すると以下のような点が優れています。 充実した標準ライブラリ コンパイルの容易さ 公式フォーマッター クロスコンパイル、マルチプラットフォーム対応 複数返り値によるerrnoからの脱却 インターフェースによるオブジェクト指向の実現 GC(Garbage Collection) スタックやヒープを意識しないプログラミング 整数仕様の整理 今回はこの中でも紹介されることが少ない整数の仕
<?php namespace App\Socialite; use Laravel\Socialite\Two\AbstractProvider; use Laravel\Socialite\Two\ProviderInterface; use Laravel\Socialite\Two\User; class LineProvider extends AbstractProvider implements ProviderInterface { protected function getAuthUrl($state) { return $this->buildAuthUrlFromBase('https://access.line.me/dialog/oauth/weblogin', $state); } protected function getTokenUrl() { retu
Swift Advent Calendar その2の23日目の記事です。 Swiftはマルチパラダイム 私がiOS開発に手を出し始めたのはおよそ4,5年ほど前、当時はまだSwiftは存在せず Objective-Cによる開発で、ちょうどMRCからARCに切り替わる手前ぐらいに初めて出会いました。 当時は元々アプリエンジニアがほとんど社内にいない中、Android開発をもくもくと開発しており オブジェクト指向はなんぞや?という所からJava先生にいろいろ教えて貰っていた所だったので、 その名の通りオブジェクト指向ベースであるObjective-Cにはretainカウントに発狂する以外はある程度キャッチアップできていました。 Swiftはマルチパラダイム言語と呼ばれています。 Objective-Cゆずりのオブジェクト指向、そして関数型を取り入れ、 また各言語に散らばっていた素晴らしい機能(N
はじめに 本投稿は、Schooの年末特別企画「Schoo advent calendar 2016」への投稿記事になります。 14日目の今回は、先日公開したSchooアプリver2系のバックエンド構成について、個人的なピックアップポイントと共にお届けします。 それでは、どぞー サーバー構成と概要 まずは、簡単な構成図です。クライアントに近い方から紹介していきます。 ELB/TCP 最前面にELBを配置しています。 こちらはロードバランサーとして利用しているのではなく、2個あるサーバーグループへのアクセスをリリース毎に切り替える目的で利用しています。 (TCPモードにしているのは、HTTP/2を扱うため) Pickup! ELBに登録するEC2インスタンスを動的に入れ替えてトラフィックの切り替えを実現しているんですが、それを自動でやってくれるのはSchoo開発チームのお友達「すくすけ」ですよ
GoにはGo 1 promise of compatibilityがあり基本的にGo1.xでAPIのインターフェースが変更されることはない.そのため過去に書いたコードを新しいGoでビルドしてもぶっ壊れることは(おそらく)ない.ただリリースごとに新しいパッケージや関数/メソッドはどんどん追加されていくため古いGoで新しいコードをビルドすることはできないことがある(例えば,標準のcontextパッケージを使っているコードはGo1.7以降でしかビルドすることができない). GoはリリースごとにGC(e.g., Sub-millisecond GC pauses)やコンパイラ(e.g, SSAの導入)や各標準パッケージの改善が行われる.そのため自分は「どんどんバージョン上げていけば良い.だからパッケージも同じく最新のバージョンで動くものを提供すれば良い」と思う.がこれは個人的な思想で誰かが使える形
Schooアドベントカレンダーの20日目の記事です。 はじめに わたしについて こんにちは、Schooの@ohidaです。2016年9月にSchooにジョインし、イノベーション推進室及びプロダクト戦略室という部署で、新規事業を推進したりSchooをよりイケてるサービスにするお仕事をしています。会社ではてへぺろちゃんと呼ばれています。 私は開発チーム所属のバリバリのエンジニアではないのでSchooのエンジニアリングの凄みについてはあまり語れません。ので、今回はこれから社内での導入を企んでいるお気に入りフレームワークのLaravelのことについて書きたいと思います。 なんの話をするか LaravelというPHPのフレームワークを使って簡単なウェブアプリケーションをひとつつくってみようと思います。Laravelの基本的な機能の一部+αでつくる予定です。ウェブアプリをつくるのってこんな感じで楽しい
Laravelはじめたての頃、誰もが遭遇する嫌なメッセージの代表格 「TokenMismatchException in VerifyCsrfToken」 これが発生した時に、TOPページに飛ばすとかそういうことをします。 必要になった経緯 WEB画面上でのメール送信プログラムをつくっていたとして、 送信完了ページで画面をリロードすると、メールが二重で送信される。 だからメール送信後、 $request -> session() -> flush(); みたいなことをすると 二重送信は防げるが、トークン情報が消失するため、TokenMismatchException が出てくる。 なので、トークン情報がない時(送信完了画面でリロード、または送信完了画面に直接アクセス)はTOPページにリダイレクトさせる 実装 <?php namespace App\Exceptions; use Excep
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く