Goを使いはじめました。
仕事がひと段落しました。
案の定放置してしまいました!
PHP + Laravelの案件は1段落し、最近ではGoの案件に少しずつ関わっています。
Packageも少しづつ覚えていかねければならないので大変です・・・。
最近になって初めて静的型付けの正しい意味を知りました。
業務 + 本 + Udemyの講座でちまちまやってきます。
※ 色々と端折っているので動かないです
func main() {
var addr = flag.String("addr", ":8080", "アプリケーションのアドレス")
flag.Parse() // フラグを解釈します
r := newRoom()
r.tracer = trace.New(os.Stdout)
http.Handle("/", &templateHandler{filename: "chat.html"})
http.Handle("/room", r)
go r.run()
log.Println("Webサーバーを開始します。ポート: ", *addr)
if err := http.ListenAndServe(*addr, nil); err != nil {
log.Fatal("ListenAndServe:", err)
}
}
http.Handle, http.HandleFuncに第1引数のpathで第2引数の処理をするという感じで書きます。
ルーティングみたいな感じですね
最終的にはhttp.ListenAndServeにhttp.HandleFuncと、
http.HandleFuncに変換されたhttp.Handleが登録されるみたいです。
Goを使いこなせるようになる日は果たしてくるんでしょうかね・・・。
まぁPHP + Laravelの時も案件やりながら、今振り返ると(自分的には)驚くぐらい成長しているので、気長にやっていきます。
Goの次はScalaがやりたいですね。ApachSparkを使ってみたいです。
実はもうUdemyの講座は購入済みなのですが、全部英語なので、終わるのはいつになることやら・・・。
Laravel でVue.jsを使ってみたかった
こんにちは
突然ですがLaravelでVue.jsを使ってみたいのです
javascriptのフレームワークは初めての挑戦です
Vue.jsとは
Vue (発音は / v j u ː / 、 view と同様)はユーザーインターフェイスを構築するためのプログレッシブフレームワークです。他の一枚板(モノリシック: monolithic)なフレームワークとは異なり、Vue は少しずつ適用していけるように設計されています。中核となるライブラリは view 層だけに焦点を当てています。そのため、使い始めるのも、他のライブラリや既存のプロジェクトに統合するのも、とても簡単です。また、モダンなツールやサポートライブラリと併用することで、洗練されたシングルページアプリケーションの開発も可能です。
さっそくnpm installを実行しますがエラーになってしましました
いつもならここでだいたい諦めてしまうんですが、
今回はCDNで読み込んでやってみます
参考:
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
main.blade.php
<div class="container">
<div id="vue_field">
<h3>@{{ message }}</h3>
<div id="response_view_field"></div>
<p v-if="seen"><b>click button!</b></p>
<input type="text" id="text" value="" name="text"><br>
<button type="button" id="button">Submit</button>
</div>
</div>
<hr>
<script type="text/javascript src="/js/index.js"></script>
<script>
(function(){
$('#button').click(function(){
const text = document.getElementById("text").value;
if(text !== ""){
$.ajax({
type: "POST",
url: "{{ url('/post') }}",
data: {text: text},
dataType: 'text',
timeout: 10000,
success: function(response){
app.seen = false;
$('#response_view_field').html(response).css({
"width": "500px",
"height": "40px",
});
}
});
}else{
alert("入力は必須です");
}
});
$('#text').change(function(){
let p = document.getElementById('response_view_field').innerHTML;
if(!p){
app.seen = true;
}
});
</script>
index.js
const app = new Vue({
el: '#vue_field',
data: {
message: "Hello Vue!!!",
seen: false,
},
});
Controller
/**
* @param Request $request
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function returnViewFile(Request $request)
{
$results = "入力されたのは{$request->text}です";
return view('responseView', ['results' => $results]);
}
responseView.blade.php
@if(isset($results))
<p>{{ $results }}</p>
@endif
テキストを入力してカーソルがボックスら外れると
app.seen = true;
となり、pタグが表示されます
<p v-if="seen"><b>click button!</b></p>
ボタンを押すと非同期通信がされ、
通信が成功したらコールバック関数で
app.seen = false;
となり、
<p v-if="seen"><b>click button!</b></p>
は表示されなくなります
そして{{ $results }}にControllerで定義した$results
入力されたのはhelloです
が入ったresponseView.blade.php
<p>入力されたのはhelloです</p>
を
$('#response_view_field').html(response).css({
"width": "500px",
"height": "40px",
});
で
<div id="response_view_field"></div>
に表示したら終了です
<div id="response_view_field"><p>入力されたのはhelloです</p></div>
とりあえずLaravelでVueを使ってみたくて、
しょうもないものを作ってしまいましたが私は満足です
Laravel ajax通信がしたい
ajax通信がしたいのです
長いやつを書いてみたいのです
blade
@extends('layout.master')
@section('content')
<div class="btn-group-lg">
<button type="button" id="button1"> 1 </button>
<button type="button" id="button2"> 2 </button>
</div>
@endsection
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>hobby</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
</script>
<script type="text/javascript" src="/js/ajax.js"></script>
<link rel="stylesheet"href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css">
<link rel="stylesheet" href="/css/styles.css">
</head>
<body>
@yield('content')
</body>
</html>
ajax.js
(function(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
const pi = 3.14;
$('#button1').click(function(){
$.post("{{ url('/post/ajax') }}", {pi: pi},
function(response){
alert("戻り値は" + response + "です");
});
});
$('#button2').click(function(){
$.ajax({
type: "POST",
url: "{{ url('/post/ajax') }}",
data: {pi: pi},
dataType: 'json',
timeout: 10000,
success: function(response){
alert("戻り値は" + response + "です");
}
});
});
})();
Controller
use Illuminate\Http\Request;
/**
* 3.14 × 1~100の間の乱数を返す
* @param Request $request
* @return float|int
*/
public function returnRandomNumber(Request $request)
{
return $request->pi * mt_rand(1, 100);
}
前々から思っていました
ajaxという響きがかっこいいです
javascriptのフレームワークもそのうち挑戦してみたいです
Laravel validation 任意の記号をはじきたい
バリデーションで記号をはじきたいとき
本当はホワイトリストを指定できればいいのですが、
平仮名、片仮名、漢字を許可したいので、
はじきたい記号と空白を指定しました
$validationRules = [
'pram' => ['required', 'regex:/^[^!"#$%&\'()\.,\/:;<=>?@\[\\\]^_`{|}~\s]+$/'],
];
うろ覚えでちゃんと動作確認してません・・・
記号の指定はこちらを参考にしました ↓ ↓ ↓
参考ページの記号否定をコピペしてregexに入れたものです
これはどうも動かないようです
$validationRules = [
'pram' => ["regex:/[^!\"#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]+/"],
];
行頭^と行末$(^[・・・・・]+$ )をつけないと、
許可する文字が含まれる時にすり抜けてしまいます
任意入力だけど、記号をはじきたいという場合は、
+から*に変えればいいかと思いきや普通に引っかかってしまいました
$validationRules = [
'pram' => ["regex:/[^!\"#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]*/"],
];
とりあえずnullableにしておきました
これで引っかからずにすみます
$validationRules = [
'pram' => ['nullable', "regex:/[^!\"#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]*/"],
];
ちゃんと動作確認したら、たぶん編集すると思います
ではでは
Laravel return viewのメモ
return viewするやり方
viewを返す
<?php // ヘルパ public function returnView() { return view("viewFile"); } // ファサード public function returnView() { return \View::make("viewFile"); }
viewに値を渡す
<?php public function returnView($variable) { return view("viewFile", compact($variable)); } public function returnView($variable) { return view("viewFile")->with('variable', $variable); } public function returnView($variable) { return view("viewFile", ['variable' => $variable]); }
viewに複数の値を渡す
<?php public function returnView($variable1, $variable2) { return view("viewFile", compact('variable1', 'variable2')); } public function returnView($variable1, $variable2) { return view("viewFile")->with(["variable1" => $variable1, "variable2" => $variable2, ]); } public function returnView($variable1, $variable2) { return view("viewFile", ["variable1" => $variable1, "variable2" => $variable2, ]); }
いろんなやり方がありますね
ではでは
初めてのはてなブログ
タイトルについて
こういうタイトルの記事を最初に書いているブログって、
大体1〜5記事ぐらいで途切れている印象なんですが、
気のせいでしょうか
私も何度かやってます
はてなに対する勘違い
はてなダイアリーが終了するようですが、
私ははてなブログが終了するものだと勘違いしておりました
終わっちゃうんじゃはじめてもしょうがないなーと思っていたのですが、
勘違いに気づけたのではじめます
記事内容について
見出しってとても便利ですね
話をぶった切っても違和感があまりないというか
文脈を考えなくていいのが楽です
ブログには主にプログラミングについて書いていくつもりです
qiitaとかに投稿するのはなんとなく気が乗らないのです
乗らないのですが、、、
学んだことをアウトプットする場が欲しかったのです
他には普通にプログラミングに関係ないことも書こうと思います
ではでは