ブログ内検索

micro:bitページ
とにかく速いブログサイトを目指す

カテゴリー : Go言語/page-1

SOY CMSマニュアルページ作成中

SOY CMSの開発秘話を投稿しました。→SOY CMSの開発秘話
 

Go言語で関数型の値を扱う

helloを表示するgreet関数を変数fに代入して実行してみる。package mainimport "fmt"func main() {var f func()f = greetf()}func greet() {fmt.Println("hello")}ここで、f = greetは、関数greetを値として変数に代入している。この場合、f()で、変数fの値が関数型だったら実行される。fmt.Printlnすると、hel

 

Go言語で内部コマンドを作成する③

~/workspase/go/flagを作業ディレクトリとし、main.goファイルを作成し、その中に下記のコードを入力する。package mainimport ("flag""fmt")var IntOpt = flag.Int("i", 1111, "please input interger value")var StrOpt = flag.String("s", "default", "please input string value")

 

Go言語で内部コマンドを作成する②

~/workspase/go/cmdを作業ディレクトリとし、main.goファイルを作成し、その中に下記のコードを入力する。今回は、os.Argsの機能を調べてみる。package mainimport ("fmt""os")func main() {fmt.Println(os.Args)if len(os.Args) > 1 {fmt.Println(os.Args[1])}}次に下記のコマンドを入力する。c

 

Go言語で内部コマンドを作成する①

 ~/workspace/go/cmdを作業ディレクトリとして、main.goファイルを作成し、下記のコードを入力する。package mainimport ("fmt")func main() {fmt.Println("usako")}次に、インストールしたMINGW64を使って、下記のような実行ファイルを作成する。$ cd ~/workspace/go/cmd$ go build main.go$ ./main.ex

 

Go言語で一方向ハッシュ関数

ryokoという言葉を一方向ハッシュ関数を自作して暗号化してみる。package mainimport ("fmt")func main() {hash := CreatHash("ryoko")fmt.Println(hash)}func CreatHash(p string) string {b := []byte(p)fmt.Println(p)fmt.Println(b)return ""}func

 

Go言語でファイルの読み込み

templateというファイルの読み込みを行う。package mainimport ("fmt""io/ioutil""log""os")func main() {file, err := os.Open("template/header.txt")if err != nil {log.Fatal(err)}defer file.Close()fmt.Println(file)var content []bytecontent, err = ioutil.

 

Go言語でhtmlからの文字の部分的取得

htmlから本文を取得してみる。package mainimport ("bufio""io""log""net/http""os""strings")func main() {url := "https://saitodev.co/article/%E3%83%A4%E3%83%96%E3%82%AC%E3%83%A9%E3%82%B7%E3%81%AE%E5%9F%B7%E5%BF%B5"resp, err := htt

 

Go言語で文字列操作

Go言語で"<p><img src="/site/files8/P9160020.JPG" /></p>"の文字列を、<p><img src="./files/P9160020.JPG"></p>"に置換してみる。package mainimport ("fmt""regexp""strings")func main() {line := "<p><img src=\"/

 

Go言語で特定のサイトの複数の画像を取得する

植物のミカタの任意のページから複数の画像を取得してみる。func main() {url := "https://saitodev.co/article/%E6%AF%94%E5%8F%A1%E5%B1%B1%E3%81%AE%E5%B1%B1%E9%A0%82%E4%BB%98%E8%BF%91%E3%81%AB%E3%81%82%E3%81%A3%E3%81%9F%E5%A4%A7%E3%81%8D%E3%81%AA%E5%B2%A9"response, err := http.Ge

 

Go言語でHTMLのイメージタグから画像を取得

画像の名前がついたファイルをそのまま作成する。package mainimport ("fmt""io/ioutil""log""net/http""os""regexp""strings")func main() {var line stringline = "<p><img src=\"/site/files10/P5100314.JPG\" alt=\"\" /></p>"r := regexp.MustCompile("

 

Go言語でWebサイトから画像のデータを取得

植物のミカタから任意の画像データを取得し、main.goと同階層に画像ファイルを作成してみる。package mainimport ("io/ioutil""log""net/http""os")func main() {var url stringurl = "https://saitodev.co/site/files10/P5080305.jpg"response, err := http.Get(url)if err != nil {log.Fatal(e

 

Go言語でファイル作成

main.goファイルと同階層に「hello」と記載されたsample.txtファイルを作ってみる。package mainimport ("log""os")func main() {var file *os.File_, err := os.Stat("sample.txt")if err != nil {file, err = os.Create("sample.txt")if err != nil {log.Fatal(err)}} else {file

 

Go言語で構造体のメソッド

Go言語では、任意の型に特化した関数を定義するための仕組みであるメソッドという機能がある。Person型の構造体を含んだ関数Greetをパッケージに組み込んでmain.goファイルで実行してみる。まず、sample.goファイルに下記のコードを記載する。package sampleimport "fmt"type Person struct {Id intName stringReading string}func (p *Person) Greet()

 

Go言語で構造体

Go言語の型は、typeで自由に作ることができる。今回は、「複数の任意の型の値を一つにまとめたもの」である構造体(struct)という型を作成する。例えばryokoという人を番号とふりがなをつけて表示してみる。package mainimport "fmt"type Person struct {id intname stringreading string}func main() {var ryoko Personryoko = Person{id:

 

Go言語でマップ(連想配列)

任意の型のキーと任意の型の要素を保持する特殊な配列をマップと呼ぶ。他言語では連想配列と呼ぶ。キーが「name」、要素が「Tuyoshi」,キーが「reading」を要素が「Saito」の組み合わせを表示してみる。package mainimport "fmt"func main() {var m map[string]stringm = make(map[string]string)m["name"] = "Tuyoshi"m["reading"] = "Saito"fm

 

Go言語でスライス(可変長配列)

Go言語のmake関数を使って、10までの要素を作り、4番目の数「5」を表示してみる。package mainimport "fmt"func main() {var s []ints = make([]int, 10)s[4] = 5fmt.Println(s)}要素の数を特定しないで記載する配列を可変長配列と呼ぶ。前回の固定長配列は、var s intで表したが、可変長配列は、var s []intと[]を引数の前に記載する。また、配列を記載する際は、s = mak

 

Go言語で配列

配列を使って、3つの文字列を指定して、表示してみる。package mainimport "fmt"func main() {var array [10]stringarray[0] = "ryoko"array[1] = "usako"array[2] = "kumata"fmt.Println(array)}ここでvar array [10]stringは、10個の文字列を持つ変数arrayという意味を表す。次に、array[0] = "ryoko"で0番目の文字を

 

Go言語で繰り返し

Go言語のforを使って繰り返す変数iを表してみる。package mainimport "fmt"var i intfunc 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++のように、;で区切って3つま

 

Go言語でHTTPのPOST

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

 

Go言語でHTTPのGET

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

 

Go言語でユニットテスト

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

 

Go言語で制御構文のif文

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

 

Go言語でpackage

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

 

Go言語で関数

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

 

Go言語で変数

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

 

Go言語でHello World

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

 

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

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

 

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

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

 

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

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

 

WindowsでGo言語

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

土壌分析アプリsoil2 by Go

最近、土壌分析の各値が植物学的にみてどのような影響があるのか?という話をする機会が増えた。(土壌分析の話ではない)土壌分析で施肥の癖を知る話はしたはいいが、土壌分析を行う人が増えると何かと大変らしい。土壌分析の測定後の入力が手間らしく、それを軽減できたらもっと行う人が増えるだろうと。ということで、各値を入力したら、こんな感じでグラフ化するWebアプリを開発しました。(公開形式については身内のみ公開にする予定です)

 

Goのgoroutineで平行処理を試してみる

時代はマルチコアマルチコア - Wikipedia一つのCPUに見せかけて、複数のCPUが搭載されているのが今のパソコンの主流せっかくマルチコアなんだし、プログラミングもマルチコアを活かしたいということで、Go言語のgoroutine(並行処理)を試してみた。これで平行処理もばっちりだ。平行計算 - Wikipediaと言うわけで、平行処理の練習と解釈の意味を込めて、ここにメモを残す本来、プログラミングは書いたコードを上から

 

GoでGETを使ってHTMLを文字列で取得してみる

プログラミングで基礎的な内容を調べようとネットで検索してみると、引っかかるのは〇〇のライブラリを使ってみたといったものばかり。開発をする上で、ライブラリの利用は確かに最短で良いけど、商売をしていく上での革命的な決定打ってそういう表層の情報ではないじゃん。知りたいのはもっとピュアな箇所だよということで、今回はGo言語のhttpパッケージにあるGet関数で、URLを指定して、HTMLを文字列として取得するまでを書いてみた。自分用のメモとして

 

golangでテストを書いてみたのでメモ

golang(Go言語)ではテストが標準で用意されており、テストコードを書くのが簡単ということで書いてみた。まずはgoというフォルダを作成して、sample.goというファイルを作成してみた。go└── sample.goディレクトリ構造はこんな感じ。sample.goに下記の様なランダムな文字列を作成して、作成した文字列をMD5でハッシュ化して表示するというコードを用意した。package mainimport ("fmt""cryp

 

Golangのsessionの取り扱いの際の型で苦戦した

今後のことを考え、PHPでの開発はSOY Shopを動かす時ぐらいにして、主力はGolangに移していきたいなとコードを書いていたところ、Golangで立てたWebサーバでのセッションの取り扱いで苦戦した。セッションとかはさすがPHP!Webアプリ専用の言語だけあってよくできてる。前置きはここまでにしておいて、今回Golangで苦戦した箇所をメモとして残しておくGolangの現在のバージョン(1.5.2)では、標準でセッションを扱うためのライブラリはない。そこで、

 

Goで一方向ハッシュ関数によるパスワードの暗号化を書いてみた

普段の帳簿周りを自動化したいから、自分ら用にちょっとしたアプリを作ることにした。せっかくの機会なので、Goで一方向ハッシュ関数によるパスワードの暗号化を書いてみたので、勉強がてらメモを残しておく。Go (プログラミング言語) - Wikipedia暗号学的ハッシュ関数 - Wikipedia一方向ハッシュ関数とは、アプリでアカウント登録の際にパスワードの設定をしてもらうでしょ。それをそのままサービス側のデータベースに保存すると危ないので、入力したパスワ


Powered by SOY CMS  ↑トップへ