カテゴリー : Go言語

SOY CMSマニュアルページ作成中
SOY CMS、SOY ShopとSOY Appの操作に関する質問を下記のページで受け付けています。

SOY CMS/Shopで標準機能だけでは実装が難しい時はお気軽にご相談下さい。

SOY CMSの開発秘話を投稿しました。→ SOY CMSの開発秘話
ブログ内検索
 

Go言語で繰り返し

Go言語のforを使って繰り返す変数iを表してみる。 package main import "fmt" var i int func main() { for i = 0; i 10; i++ { fmt.Println(i) } } for i = 0; i 10; i++では、iは0から始まって、10より下の数値であれば繰り返し実行する。実行した後にiに+1をして次の繰り返し実行を行う。 forは、, 0; i 10; i++のように、;で区切...

Read More…

 

Go言語でHTTPのPOST

クライアントがサーバにデータを送ることをHTTPのPOSTと呼ぶ。 今回はチャットワークのマイチャットに「GOからのテスト投稿」という文字列を送ってみる。 チャットワークに投稿するための事前準備として、チャットワークAPI鍵とroomIDを調べておく必要がある。 調べ方は下記の記事を参考にした。 PHPでチャットワークAPIを介してメッセージを投稿してみる func main() { room_id := "36286956" url := "https://api.cha...

Read More…

 

GoでHTTPのGET

インターネットでは、クライアントとサーバというものがあり、クライアントがサーバに命令を送って、サーバがその結果を返すということをしている。 命令を送ることをリクエストと呼ぶ。今回はウェブサイトを表示するHTTPに焦点を絞って記載する。HTTPリクエストにはGETとPOSTというものがある。 今回は、HTTPのGETを使ってみる。 例えば、「植物のミカタ」というサイトのトップページにアクセスしたい場合は、一番簡単な方法はhttpが使えるClomeなどのアプリケーションのアドレスバーにhttp...

Read More…

 

Goでユニットテスト

自分が作った関数が正しく動くか調べるのにテストコードというものがある。 以前、整数が偶数ならtrue、奇数ならfalseを返すJudgeEo関数を作ったが、それをテストしてみる。 まず、以前コードを記載したryoko/func.goファイルと同じ階層に新規ファイルを作成する。 ここでは名前をryoko/func_test.goと名付ける。func_test.goに下記のコードを入力して実行する。 package ryoko import "testing" func Test...

Read More…

 

Goで制御構文のif文

if文は正しいか正しくないかという判定によく使う制御構文である。 例えば、変数iが5ならば、「iに格納されている文字は5」と表示してみる。 package main import "fmt" func main() { var i int i = 5 if i == 5 { fmt.Println("iに格納されている文字は5") } } if i == 5でiという値が、5であればを意味し、5であれば{}の中身を実行するという意味になる。 ※...

Read More…

 

Go言語でpackage

関数をまとめておく機能としてpackageがある。 packageすると、main関数に記載するコード行が小さくなり、コードが読みやすくなるという利点がある上にpackageは再利用できるし、配布もできる。 まずgoフォルダに合わせて右クイックで新規フォルダを作り、名前をつける(今回はryoko。これがpackage名になる)。 次にryokoフォルダに下記のような新規ファイルを作る。 ※ryokoフォルダの中のファイルにしたい場合は、ファイル名の前に必ずryoko/を入れる...

Read More…

 

Go言語で関数

「good morning」を表示するというaisatuという関数を作ってみる。 関数とは、func 関数名(){}で作成する一連の処理をまとめたものである。 package main func main() { aisatu() } func aisatu() { print("good morning") } main関数の中で、自作したaisatuという関数を実行することになる。main関数はエントリーポイントと呼ぶ。関数の呼び出しには必ず()をつける...

Read More…

 

Go言語で変数

変数を使ってみる。ここでは変数に5を代入して表示してみる。 package main func main() { var suji int suji = 5 print(suji) } varは変数をつくる前に入力するコード、sujiは値が入る箱のようなものにつける名前、intは整数を意味する。 なので、sujiの部分には、いろんな数字を入れることができる。 ここでは変数数字に5を代入して、printで出力する(実行は、ctrl+alt+b)。 すると、5と表示...

Read More…

 

Go言語でHello World

Go言語の環境の準備は下記の記事より WindowsでGo言語 workspace内にgoフォルダ(プログラミングの世界ではディレクトリと呼ぶ)を作る。 Atomを開くと、Enter the path for the new file という文字が表示されるので、そこにmain.goと入力する。 これで、goディレクトリの中に、main.goというファイルが出来上がった。 main.goに下記のコードを記述。 package main func main() { ...

Read More…

 

妻にプログラミングを教えることにした-後編

妻にプログラミングを教えることにした-前編 前回、妻にプログラミングを教えることにした背景を記載した。 プログラミングを体験することによって、人に伝える前に内容を整理する習慣が付いて、 整理するということが結果として様々な人達の業務改善に繋がると信じている。 そして前回記載しなかった内容だけれども、 もう一つ教えたい背景がある。 それは、中学生向けのプログラミング教室で感じたことで、 中学生にプログラミングを教えてみて。その1 教えるということは、 伝える前に対...

Read More…

 

妻にプログラミングを教えることにした-前編

パソコンを使う作業員のイラスト(女性) | かわいいフリー素材集 いらすとや 前々からやりたいことに一つに女性向けのプログラミング教室がある。 何故女性向けに話をしたいかというと、 一時、市場調査を兼ねてハローワークに頻繁に立ち寄っていた時のこと 事務職になりたい人が非常に多くいて、 その割に求人募集がなく、事務職の倍率が3倍を越えていた事を知った。 運良く事務職をやりたい人と出会うことが出来たので、 何故様々な職種があるのに事務職になりたいのですか? と質問すると、...

Read More…

 

レバテックキャリアさんの技術ブログで当ブログのGo言語の記事が紹介されました

IT・Webの転職・求人のレバテックさんが運営するレバテックキャリアさんのブログの Go言語を勉強中という方に読んでほしい記事まとめの企画で当ブログのGo言語の記事が紹介されました。 Go言語を勉強中という方に読んでほしい記事まとめ - レバテックキャリア 紹介された記事はGo言語の標準機能のユニットテストを試してみた記事で、 実際に自分がテストコードを作成した時のフローを紹介が良かったみたいです。 golangでテストを書いてみたのでメモ 企画内のちょっとした紹介ではありま...

Read More…

 

COMODO Internet Securityを利用しながらGoで書かれたプログラムを実行する

前回のWindowsでGo言語で64ビット版のWindows 10でGo言語の最小限の開発環境の構築方法をまとめた。 残念なことにまとめた手順では私が利用しているパソコンでは動作することができなかった。 動作しなかった要因は、 利用しているアンチウィルスソフトのCOMODO Internet Security 10(以後COMODO)がGoで書いたスクリプトの実行をブロックすることによる。 Free Internet Security | Why Comodo Internet Se...

Read More…

 

WindowsでGo言語

Windows 10の環境でGo言語を使用することになったので、 Windows 10でのGo言語の環境をメモとして残しておく。 ※今回の手順はGo言語で記載されたスクリプトの実行が確認できるまで。細かい設定は端折る 環境 Windows 10 Go 1.9.4 Git 2.16.1 Atom 1.23.3 はじめに使用しているWindows 10が64bitか調べておく。 デスクトップ左下にあるウィンドウのアイコンにカーソルを合わせ、 右クリックでメニュ...

Read More…

 

SOY CMSに総当り攻撃を仕掛けてみる。その2

SOY CMSに総当り攻撃を仕掛けてみる。その1 前回、Go言語でSOY CMSに対して総当り攻撃の初期段階のコードを書いてみた。 ※初期段階:ログインを一度試すだけのコード しかし、 ログインフォームにトークンのチェックを実装したことにより、 あっけなく無効化した。 ということで、 今回は前回実装したトークンのチェックを通過するように書いてみる。 まずトークンのチェックは何かだけど、 SOY CMSであれば、管理画面のURLを特定したい ...

Read More…

 

SOY CMSに総当り攻撃を仕掛けてみる。その1

SOY CMSで総当たり攻撃に対応してみた 以前、SOY CMSに総当たり攻撃を受けた場合は通知を送信するという機能を実装しましたが、 そもそも総当たり攻撃はどうやってやるの? ということで、書いてみることにする。 手順としては、 ・IDとパスワードの対が大量にある辞書データを用意する(ここは省略) ・何度もログインのPOSTを行うプログラムを用意する ・辞書データを元に何度もログインのPOSTを送信し続ける というわけで、 POSTのプログラムを用意すれば対応できると...

Read More…

 

Go言語で認証鍵を使ってSSHの接続を行う

Go言語でサーバのバックアップの仕組みを作ろう。SSH編 前回、Go言語でSSHでリモートアクセスするコードを書いた。 とは言っても、 パスワード形式だけだと使えないサーバが多いだろうから 認証鍵によるアクセスのコードも調べてみる。 package main import ( "log" "golang.org/x/crypto/ssh" ) func main() { ip := "***.***.***.***" //サーバのアドレス p...

Read More…

 

Go言語でサーバのバックアップの仕組みを作ろう。SSH編

Go言語でサーバのバックアップの仕組みを作ろう。ファイルの更新編 先日から勉強を兼ねて書いているSambaのサーバからLANの他のパソコンにファイルをコピーするプログラムだけど、 書いている時に気がついたけど、 Go言語でSSHでSambaサーバに接続できたとしても、 ローカルマシンの様にWalkは使えないんじゃね?って。 端末からリモートアクセスしたら、 コマンドかシェルスクリプトしか使えないんじゃないか? ということで、バックアップの仕組みは軌道修正。 Sambaサー...

Read More…

 

Go言語でサーバのバックアップの仕組みを作ろう。ファイルの更新編

Go言語でサーバのバックアップの仕組みを作ろう。Walk編 前回、同一のパソコン間で、 あるディレクトリをまるまるバックアップするスクリプトを書いた。 その時、 ディレクトリをWalkという関数で再帰的に調べてディレクトリやファイルをコピーした。 前回のコードではファイルのコピーは必ず行うという無駄な処理が多いため、 今回はファイルの更新日時を調べて、バックアップ元の方が新しければコピーを行う という処理を追加してみることにした。 Walkで再帰的に調べて...

Read More…

 

Go言語でサーバのバックアップの仕組みを作ろう。Walk編

使わなくなったパソコンにSambaを入れて、ファイル共有用のサーバを構築してみたでLAN内のパソコン用のファイルサーバを構築してしばらく経過した。 そろそろ重要なファイルが保管される様になってきたので、 サーバのバックアップをとらないと不安になってきたわけで、 バックアップの検討を始めた。 サーバのPCにもうひとつハードディスクを搭載してバックアップも良いけど、 やっぱり他のPCに保管しておきたくなるので、 LAN内の他のPCにバックアップするためのコードを書いてみることにし...

Read More…