ラベル プログラミング の投稿を表示しています。 すべての投稿を表示
ラベル プログラミング の投稿を表示しています。 すべての投稿を表示

2024年11月30日土曜日

【Flutter】Flutterサンプル

個人的によく使いそうな

サンプルのURLをまとめていました

 

・Draggable (Widget of the Week) 

 https://www.youtube.com/watch?v=q4x2G_9-Mu0&list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG&index=22

・ DropdownMenu

https://www.youtube.com/watch?v=giV9AbM2gd8&list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG&index=13&t=27s 

・DropdownButton

https://www.youtube.com/watch?v=ZzQ_PWrFihg&list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG&index=50

・CustomPaint

 https://www.youtube.com/watch?v=kp14Y4uHpHs&list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG&index=151

・ClipRRect

https://www.youtube.com/watch?v=eI43jkQkrvs&list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG&index=153

 ・Tooltip

https://www.youtube.com/watch?v=EeEfD5fI-5Q&list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG&index=150

 ・SizedBox

https://www.youtube.com/watch?v=EHPu_DzRfqA&list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG&index=139

・IndexedStack

https://www.youtube.com/watch?v=_O0PPD1Xfbk&list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG&index=123

・Stack

https://www.youtube.com/watch?v=liEGSeD3Zt8&list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG&index=120

・AlertDialog

https://www.youtube.com/watch?v=75CsnyRXf5I&list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG&index=111

・ExpansionPanel

https://www.youtube.com/watch?v=2aJZzRMziJc&list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG&index=72

 

【 All Samples】

https://flutter.github.io/samples/# 

https://www.flutter-gallery.com/ja

https://github.com/flutter/gallery?tab=readme-ov-file#flutter-gallery

2024年11月5日火曜日

【JavaScript】画面の座標に関するものCSSだけで吹き出しをつくる

仕事で、吹き出し用の部品を作らなければならなくなったので、実装方法しらべてみました。 以下の参考URLが分かりやすかったので、これを参考にしたら対応できました。
 【参考URL】

2024年11月4日月曜日

【JavaScript】画面の座標に関するもの

 要素の幅、高さや他のジオメトリの特徴を関する情報を読み取ることのできる JavaScript のプロパティがたくさんあります。
 JavaScript では、要素を移動したり配置するときに、座標を正しく計算するためにしばしばそれらを必要とします。 
以下が参考にした情報です。

 (1) 位置情報 ・要素の位置座標を取得する(「position()」と「offset()」) https://www.sejuku.net/blog/65040  
⇒「position()」は、特定のHTML要素の位置座標を取得することができるメソッドで、画面上の座標ではなくあくまでも親要素から見た位置座標である  
⇒「position()」が親要素からの位置座標なのに対して「offset()」は画面上の位置になる






 (2) サイズ 

https://taneppa.net/jquery-size/ 

ページ全体のサイズは

$(document).width(); 

$(document).height();

ブラウザサイズは
$(window).width();
 $(window).height();

(3) スクロール 
どれだけページをスクロールしたかは「scrollTop」関数を使用します 
var vScrollDistance = $(window).scrollTop();
 また、横方向にどれだけスクロールしたかも「scrollLeft」関数で取得出来ます。
 var hScrollDistance = $(window).scrollLeft();

①スクロール位置を取得・設定する方法
・画面のスクロール位置取得設定

// 画面の水平方向のスクロール位置を取得
var x = window.scrollX;
// 画面の垂直方向のスクロール位置を取得
var y = window.scrollY;
// 画面の左上にスクロール位置を設定する
window.scroll(0, 0);
// 画面の左から50ピクセル、上から100ピクセルにスクロール位置を設定する
window.scroll(50, 100);
// scrollTo()も動きは同じ
window.scrollTo(50, 100);


②要素のスクロール位置取得設定
// 要素を取得
var ele = document.getElementById('ele');
// 要素の水平方向のスクロール位置を取得
var x = base.scrollLeft;
// 要素の垂直方向のスクロール位置を取得
var y = base.scrollTop;
// 画面の左上にスクロール位置を設定する
ele.scrollLeft = 0;
ele.scrollTop = 0;


<a href="https://usagidoki.com/js-get-set-scroll/">https://usagidoki.com/js-get-set-scroll/</a>

 (4) ジオメトリ 
参考URL:














(5)getBoundingClientRect() 
要素の寸法と、そのビューポートに対する相対位置に関する情報を返します。
var element = document.getElementById('myElement'); var rect = element.getBoundingClientRect();

console.log('要素の幅:', rect.width); console.log('要素の高さ:', rect.height); console.log('要素の上端からの距離:', rect.top); console.log('要素の左端からの距離:', rect.left); console.log('要素の下端からの距離:', rect.bottom); 

console.log('要素の右端からの距離:', rect.right); 

https://developer.mozilla.org/ja/docs/Web/API/Element/getBoundingClientRect

(6) マウス座標系




2024年6月18日火曜日

【Flutter】Widget の活用方法~実装参考動画

Widget の活用方法についてですが、 Text/Center/FloatingActionButton な ど の Widget
は、こういう Widget があるというのを知らないと使えません。


では、どのような Widget があるのかをどうやって探せば良いのでしょうか?

目的に合わせた Widget をインターネットで検索すれば良いのですが、YouTube に 

Flutter 公式チャンネルが配信する「Flutter Widget of the Week」

という動画リストがあります。

 

そこではよく使われる便利な Widget を短い動画でわかりやすく紹介しています。

こちらを見ることで、様々な Widgetの情報を効率よく収集できます。

 

https://www.youtube.com/@flutterdev/videos

2024年6月15日土曜日

【Flutter】勉強用動画

 一からこつこつ勉強するのによい動画ありました。

これを1からみていくと、理解しやすかったです。

 

 

●#20 Flutter入門講座 font編 

(要約)Googleフォントの使い方や、ライセンスなどの説明がされています。

https://www.youtube.com/watch?v=Ef_P-7TQ0Eg

●#21 Flutter入門講座 flavor編

(要約)dev(開発)/stg(試験)/Prd(製品)版別での開発方法の説明

https://www.youtube.com/watch?v=U9kdK1bWifM 

 ●#22 Flutter入門講座 アコーディオン編

(要約)ExpansionTitleの使い方 、引数の話

https://www.youtube.com/watch?v=3GBxlMPhP7o

 ●#23 Flutter入門講座 Firebase Analytics編

(要約)クラウド(firebase)の使い方

https://www.youtube.com/watch?v=BWTQkkLC-Mo 

 ●#24 Flutter入門講座 Firebase Auth編

(要約)ログインといった認証系のお話。ribarpodでの状態管理や、アカウントの問題の話もあり勉強になる、

https://www.youtube.com/watch?v=KsixooHekJE

 

 ●#31 Flutter入門講座 Firebase Firestore編

(要約)DBのお話

https://www.youtube.com/watch?v=ZKww9U0jvAM

2024年5月12日日曜日

【Flutter】Flutter 勉強

こらから会社でスマホ開発用にFlutterを使うことになりました。

早速本を買ったのです、短時間で覚えるのに理解するには大変と感じました。

とくに環境設定とかわかりづらかったです。

 

 Flutter勉強するのに、本で行うのとは別にYoutubeで覚えると便利です。

ここでは、検索で見つけた動画を紹介します。

 

【FlutterとDartの学習ロードマップ】

https://www.youtube.com/watch?v=h9utcR2i2Sw

 

 【FlutterとDartのざっとの学習】

長い動画ですが、AndroidStudioの設定から一から説明しているので、流れを覚えるのにいいです

 https://www.youtube.com/watch?v=9IqUQ2TXacI&t=9s

 

 

その他の動画は以下みると勉強になります。

 

【Flutterとは?できることやメリット・デメリットまで分かりやすく】

https://www.youtube.com/watch?v=OdHwH_Zif64

 

【Flutter開発におけるAndroidStudioデバッグ入門】

 https://www.youtube.com/watch?v=vZbPdUiFiFw

 

【Flutterテストについて】

https://www.youtube.com/watch?v=H5ShtF4f94Q


https://www.youtube.com/watch?v=-G7nW26N7_4

 

 

2023年2月14日火曜日

【統合開発環境(IDE)】VSCode

 昔は開発するのにお金を払ってVisualStudioを使っていました。

今は会社での開発でVSCode(Visual Studio Code)という無料のツールを使ってます。

VSCodeは、Visual Studioは同じくMicrosoft社の提供する統合開発環境(IDE)です。

以下サイトでVSCodeについて解説されているので、読んでためしてみるとよいとおもいます。

【参考URL】

https://codezine.jp/article/detail/16467

https://codezine.jp/article/detail/16930

https://codezine.jp/article/detail/17116

 

 

サイトは会員登録していないと見れないですが、必要な情報をまとめると以下のようになります。

1、環境構築

(1) VSCodeの公式サイト(インストーラ)

Visual Studio Code – コード エディター | Microsoft Azure 

Windowsでは、x86(32bit)、x64(64bit)、ARM(64bit)の3つのアーキテクチャ向けにインストーラが用意されています。

インストール方法に合わせてファイルをダウンロードして、User Installer(使うのは自分自身だけ)かSystem Installer(PCの全ユーザが使う)を使う。

 

(2)  MACの場合のインストール

Visual Studio Code – コード エディター | Microsoft Azure

プラットフォームに合ったZipファイルをダウンロードします。

  • Universal…Intelプラットフォーム/Apple M1プラットフォーム
  • Intel…Intelプラットフォーム(x64)
  • Apple-Silicon Apple M1プラットフォーム 

 ダウンロードしたZipファイルを解凍してできる.appファイルを、アプリケーションフォルダにコピーまたは移動します。これでインストールは完了です。

 

(3)  VSCodeを日本語化

一番左側のツールバー(アクティビティバーといいます)にある拡張機能アイコン  をクリックします。

その内側のサイドバー(プライマリサイドバーといいます)の表示が「EXPLORER」(エクスプローラー)から「EXTENSIONS」(拡張機能)に変わります

サイドバーの上部にある入力ボックスに、「japanese」と入力します。

地球儀のアイコンの付いた「Japanese Language Pack for Visual Studio Code」に表示された、青い[インストール]をクリックします。

サイドバーの右に「Japanese Language Pack for Visual Studio Code」の情報が表示されますので、青い[インストール]をクリックします

ウインドウの右下に「in order to use VS Code in Japanese, …」と表示されますので、[Restart]をクリックします

 ※VSCodeを起動した直後に、ウインドウ右下にポップアップが表示されたら、それは自動で日本語化できる合図です。[インストールして再起動 (Install and Restart)]をクリックすると、自動的にプラグインのインストールが実行されて再起動します。

 


(4) VSCodeの設定

VSCodeのさまざまな設定は、アイコンをクリックして表示されるメニューから[設定]を選択することで行えます。

よく行う設定は以下となります。

・ 自動保存するか(Files: Auto Save)

    off:自動保存しない(デフォルト)
    afterDelay:Auto Save Delayで指定される時間後(デフォルトは1秒)に自動保存する
    onFocusChange:エディターからフォーカスが外れたら自動保存する
    onWindowChange:ウインドウが切り替わったら自動保存する


・フォントサイズ(Editor: Font Size)

 デフォルトは12ピクセルです

・ フォントファミリ(Editor: Font Family)

・タブサイズ(Editor: Tab Size)

タブ1文字に相当するスペースの文字数です。デフォルトは4ですが、別の設定(Editor: Detect Indentation)がオンになっている場合、ファイルの内容から自動判定される文字数で上書きされます。

・空白文字の表示(Editor: Render Whitespace)

 エディターで空白文字をそれとわかるように(暗いドットで)表示するかの設定です。ここでいう空白文字とは、半角スペースです。

  • none:一切表示しない
  • boundary:単語間の1文字の空白文字以外を表示する
  • selection:選択したテキストでのみ空白文字を表示する(デフォルト)
  • trailing:行末以外の空白文字を表示する
  • all:すべての空白文字を表示する   
  •   
  •  

※マルチカーソル

マルチカーソルを使うと、複数箇所に一気に同じ文字列を入力したり選択できるなど、コーディングを効率化できます。

マルチカーソルを設定するには、指定キーを押しながらマウスの左クリックを繰り返します。あるいは、指定キーと[Shift]キーを押しながらマウスをドラッグします。マウスを使いたくない場合には、指定キーと[Command]/[Ctrl]キーを押しながらカーソルキーを使用します。解除は[Esc]キーなどです。


 

 

 

 

2020年11月16日月曜日

Docker

 サクラインターネット契約しており、メール情報で、Dokerについて説明している記事が紹介されていました。

以下がURLで、簡潔にまとめていますので、一読お勧めします

 

 

https://knowledge.sakura.ad.jp/21387/

https://knowledge.sakura.ad.jp/23632/

https://knowledge.sakura.ad.jp/23899/ 

https://knowledge.sakura.ad.jp/26522/

2020年11月5日木曜日

【F#】演算子

 F#で計算する時に使用する演算子をまとめてみました。

1、 算術演算子/型の変換を行う演算子

7 + 2;;			//足し算
7 - 2;;			//引き算
7 * 2;;			//かけ算
7 / 2;;			//割り算(商)
7 % 2;;			//割り算(余)
-7;;			//符号の反転
not true;;		//論理値の否定。bool値のみ
 
ここで紹介した二項演算子は、基本的に
同じ型の数値型同士でしか使えないので、型変換が必要となります。
1.0 + float(2);;  
 
2、 値の大小比較や、値が等しいか
1=2;;		//1と2が等しいかどうか
1<>2;;		//1と2が異なるかどうか
1<2;;		//1が2より小さいかどうか
1>2;;		//1が2より大きいかどうか
1<=2;;		//1が2以下であるか
1>=2;;		//1が2以上であるか
max 1 2;;	//1と2のうち大きい方
min 1 2;;	//1と2のうち小さい方
 
3、 数値計算を扱う際に使用できる演算子
let pi = 3.1415926535;;	//円周率
2.0 ** 3.0;;		//冪。2の3乗を計算して8.0
pown 2 3;;		//整数の冪。2の3乗を計算して8
abs (-10);;		//絶対値を返す。この値は10
acos (-1.0);;		//cosの逆関数。この値はpi
asin 1.0;;		//sinの逆関数。この値はpi/2.0
atan 1.0;;		//tanの逆関数。この値はpi/4.0
atan2 1.0 1.0;;		//tan(引数1/引数2)の逆関数。
ceil 1.5;;			//天井関数。x以上の最小の整数に丸める。この値は2.0
ceil (-1.5);;		//この値は-1.0
cos pi;;			//cosine関数。この値は-1
exp 1.0;;			//自然対数の冪。この値は2.718281828
floor 1.5;;		//床関数。x以下の最大の整数に丸める。この値は1.0
floor (-1.5);;		//この値は-2.0
log (exp 1.0);;		//自然対数。この値は1.0
log10 (10.0**2.0);;	//常用対数。この値は2.0
round 0.5;;		//入力値にもっとも近い整数に丸める。結果は0.0
round 1.5;;		//入力値にもっとも近い整数に丸める。結果は2.0
sign 10;;			//符号を返す。この値は1
sign 0;;			//この値は0
sing (-3);;		//この値は-1
sin (pi/2.0);;		//sine関数。この値は1.0
sqrt 4.0;;		//平方根。この値は2.0
tan (pi/4.0);;		//tangent関数。この値は1.0 
 
4、 パイプライン演算子、合成演算子
let sub10 x = x - 10;;
10 |> sub10;;		//パイプライン演算子|>。結果は0
10 |> sub10 |> sub10;;	//-10。((10 |> sub10) |> sub10)と評価 
 
let add1 x = x + 1;;		//1足す関数
int twice x = x * 2;;		//2倍にする関数
let add1twice = add1 >> twice;;	//関数合成。1足して二倍にする関数
let twiceadd1 = add1 << twice;;	//関数合成。二倍して1足す関数
add1twice 10;;			//結果は22
twiceadd1 10;;			//結果は21
 
5、 小数点以下の部分を取得する
let vTo = "3.14" 
let strTo = vTo.ToString().Split('.')
let nvTo = float strTo.[0] //3.0
let fvTo =float ("0." + strTo.[1])  //0.14
 
 【参考URL】

2020年10月27日火曜日

ASP.NETをざっと勉強する

 

連載:ASP.NET MVC入門【バージョン3対応】

https://www.atmarkit.co.jp/fdotnet/aspnetmvc3/index/index.html

内の「第1回 Controller-View開発のキモを押さえる」をまとめました。

https://www.atmarkit.co.jp/fdotnet/aspnetmvc3/aspnetmvc3_02/aspnetmvc3_02_01.html 

 

 ASP.NET MVCのプロジェクトは以下のフォルダ構成になっている

フォルダ/ファイル名フォルダの中身/ファイルの内容
Controllersクライアントからのリクエストを処理するコントローラ・クラス
Modelsデータソースを操作するためのクラス
Views最終的な出力を生成するためのビュー(.cshtml、.vbhtmlファイル)
ScriptsJavaScriptライブラリ(.jsファイル)。デフォルトでjQueryをはじめ、jQuery UI、jQuery Validationなどのライブラリを含む
Contentそのほかのコンテンツ(スタイルシートや画像ファイルなど)
App_Dataアプリケーションで利用するデータ・ファイル(.mdf、.sdfファイルなど)
Global.asaxルーティング設定を行うためのグローバル・アプリケーション・ファイル
Web.configアプリケーション設定ファイル
表1 「ASP.NET MVC 3 Webアプリケーション」プロジェクトの初期構造

  

・「Razor」(コードを「@...」の形式で埋め込めるビュー・エンジン)を利用できるようになった。

・コントローラ・クラスの名前は必ず「Controller」で終わらなければならない点に要注意だ。

・ビュー変数とは、「コントローラとビューとの間で受け渡しできる変数」である、と考えておけばよい。

 ビュー変数を設定するには、以下の構文で行える。

ViewBag.変数名 = 値

 このように、ビュー変数はViewBagオブジェクトのプロパティとして設定できるわけだ。変数名は、Visual Basic/C#の命名規則に沿う限り、自由に命名して構わない。

なお、ViewBagオブジェクトを利用する際に1点だけ注意すべき点がある。というのも、ViewBagオブジェクトは.NET Framework 4のdynamicサポートを利用しているため(メンバは実行時に解決される)、プロパティの入力に当たってはIntelliSenseの恩恵を受けられ“ない”という点だ。注意してほしい。

 

 

 


2019年2月20日水曜日

【JavaScript】reduce関数

条件付き配列合計行うのに便利な関数があります。
reduce関数を使うと、for文で書かなくても簡単にできます。

【参考URL】
https://ziyudom.com/js-reduce/
http://taiju.hatenablog.com/entry/20110331/1301535208

【サンプル】
reactでのstateデータからsymbolDataを取得して、データ内のSymbolが定義しているデータの合計を求める。
getSymbolsCount() {
  const { symbolData } = this.state  let sum = symbolData.reduce((a, x) => {
    if (x.Symbol) a += 1    return a
  }, 0)
  return sum}

2018年11月2日金曜日

【NetBeans】htmlファイル実行時にデバッグができないときの対処法

NetBeansで開発していると、デバッグができなくなる時があります。

よくあるパターンは、
「ブラウザの開発ツールを立ち上げる」
とデバッグできるようになりました。

その他に、下記参考サイトに対応方法がありました。
いづれかでなおるとおもいます 。

【参考サイト】
https://konoti.com/website/web-tool/netbeans-can-not-debug.html
https://qiita.com/Tachy_Pochy/items/9747026fe55b070fd201
https://netbeans.org/kb/docs/webclient/html5-js-support_ja.html



ブレークポント削除するにはどうするんだっけ?
と思って調べたら、以下サイトに詳しく記載してありました。
https://code.i-harness.com/ja/q/2ce1e7


【C#】「値を Null にすることはできません。パラメーター名:serviceInstance 」エラー時の対応


【.NET】「値を Null にすることはできません。パラメーター名: activationContext」が表示する
値を Null にすることはできません。パラメーター名:serviceInstance

と表示されるエラーでました。
対応方法を調べたので、メモとしてまとめました。


【オペレーション】
[1] VSのソリューションエクスプローラから[プロパティ]-[セキュリティ]を選択
[2] 「ClickOnce セキュリティ設定を有効にする」のチェックを外す
 
 


【参考URL】
https://blogs.yahoo.co.jp/dk521123/30586404.html

2018年9月23日日曜日

【F#】F# リファレンス ~シンボルとキャスト、Match

1、シンボルと演算子の表
F#でまずなやむのがシンボルです。

次のURLでは、F# 言語で使用されるシンボルについて説明し、より詳しい情報が提供されるトピックへのリンクと、シンボルの使用方法の一部の簡単な説明がなされています。
https://docs.microsoft.com/ja-jp/dotnet/fsharp/language-reference/symbol-and-operator-reference/

例えば、
:> ・・・ キャストと変換で使います。
:? ・・・ match式で使います。指定された型に値が一致する場合は true を返します。それ以外の場合は、false を返します (型テスト演算子)。

キャストについては次のURLに詳しく書いてあります。
https://docs.microsoft.com/ja-jp/dotnet/fsharp/language-reference/casting-and-conversions

(2) Match式
他の言語で使われるswitch式に該当します。
【参考URL】

https://docs.microsoft.com/ja-jp/dotnet/fsharp/language-reference/match-expressions

【F#】F# リファレンス

F#始めました。
しかし、市販されている本も少なく、またサイトにある情報も少ないので、
すこしづつ情報をまとめていきたいとおもっています。

【参考URL】
https://docs.microsoft.com/ja-jp/dotnet/fsharp/language-reference/index

1、値(value)と型(type)
F#の値(value)は、特定の型(type)を持つ数量(quantity)です。
値は変更不可ですがが、
キーワード mutable を使用して、変更可能な変数を指定できます。
> let mutable x = 1
> x <- x + 1
 ・・・<-で値変更する
【参考URL】
http://fsharpintro.net/value.html

2、ラムダ式(匿名関数/無名関数)
fun pat1 ... patn -> expr
  funがラムダ式が始まることを示すキーワードで
  exprは様々な式のこと、つまり関数の本体です。
> fun x -> x + 1

関数を適用するための構文は次のようになります。
expr expr | expr(expr)
式全体を括弧で囲む必要がある点です。
> (fun x -> x + 1) 10

今度は引数が2つの関数です。
> ((fun x y -> x + y) 10) 20
> (fun x y -> x + y) 10 20

※返り値:関数本体部分の一番最後の式の値が返り値になります。
> (fun x -> x 10) (fun y -> y + 1)
val it : int = 11

引数の無い関数も定義はつぎのようにします。
> (fun () -> 10) ()
val it : int = 10

3、letを用いた関数定義
let ident pat1 ... patn return-typeopt = bodyexpr
let ident pat1 ... patn return-typeopt = bodyexpr in expr
 identは、定義する関数の名前です。演算子も定義出来ます
 pat1 ... patnは、引数で、匿名関数のところで説明したものと全く同じです
 return-typeoptは、定義する関数の型の注釈で、省略可能です
 bodyexprは関数本体に相当する式です。
> let add x y = x + y //2つの入力をとり、それらを加算する関数
> add 10 20
> let add2 = fun x y -> x + y
> add2 10 20

4、letの構文
let recを用いた関数定義(再起関数)
let rec ident pat1 ... patn return-typeopt = bodyexpr
let rec ident pat1 ... patn return-typeopt = bodyexpr in expr
>let rec fact n =
> if n=1 then
>  1
> else
>  n * fact(n-1)
> fact 5

5、参照型
参照型を使えば、値を変更可能(mutable)にできます。
値を参照型に変更するにはrefを使います。
また、!参照型とすることで、値の参照が、
参照型:=値とすることで値の変更を行うことができます。
let a = ref "hello";;
//aの値を参照
!a ^ " world";;  ---->val it : string = "hello world"
//aの値を変更
a := "hi";;
//aの値を参照
!a ^ " world";;

リストに要素を付加するには、:: (cons) 演算子を使用します。
let pdmList=ref []
pdmList:=pdm:: !pdmList  // := は参照に値を挿入 !pdmListは、pdmListの参照値 ::は結合
let tr=[tr1;tr2;tr3]|>List.max // リスト[tr1;tr2;tr3]を|>演算子を使って、List.maxを実行

6、option型
これを使うと、「値がないか、何かの値がある」ことを表すことが出来ます。
option型のデータを操作するには
パターンマッチを用います。
type 'a option =
 | None  //値がない場合
 | Some of 'a //値がある場合

2018年9月22日土曜日

【Python3】pythonの教科書(7) ~日本語対応

Pythonプログラミングで、ファイル内で日本語使うとエラーになります。

例えば、コンソールにつぎのようなメッセージが出力されます。
SyntaxError: Non-UTF-8 code starting with '\x82' in file C:\本山さん\ranking\ranking4.py on line 15, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

この場合には、
Pythonのスクリプトファイルの1行目もしくは2行目に「# coding: 文字コード」を記入します。
 ⇒ファイルで使われている文字コードを宣言し、Pythonに知らせることができます。
 「文字コード」の部分を「Shift_jis」にすればShift jisになりますし、「utf-8」にすればutf-8になります。

【参考URL】
http://programming-study.com/technology/python-japanese/

2018年9月9日日曜日

【Python3】pythonの教科書(6) ~コマンド引数、ファイル検索、os.path、クラス

1、コマンド引数、ファイル検索
コマンドライン引数を使用して、複数テキストファイルからテキストファイルを検索するサンプルです。

import sys
import os
if len(sys.argv) <= 1:  # sys.argvがコマンドライン引数
    print("pyファイルの後ろに引数(キーワード)を指定してください")
    sys.exit(0) # プログラムを終了する

keyword = sys.argv[1]
for root, dirs, files in os.walk("."):
    for fi in files:
        result = []

        try: #try-catchを使って、テキストファイル以外読み込んだ時のエラー防止
            path = os.path.join(root, fi)
            with open(path, encoding='utf-8') as f:
                for no, line in enumerate(f):
                    if line.find(keyword) >= 0:
                        line = line.strip()
                        s = "| {0:4}: {1}".format(no+1, line)
                        result.append(s)

        except:
            continue

       # resultに検索結果があれば結果を表示
        if len(result) > 0:
            print("+ file: " + fi)
            for li in result:
                print(li)


2、スクリプトパス
__file__でパス取得できます。
 
print __file__    # スクリプトファイルへの相対パス
print os.path.dirname(__file__) # スクリプトファイルのあるディレクトリへの相対パス
txt = os.path.join(os.path.dirname(__file__), 'input.txt') # スクリプトと同じディレクトリのファイル input.txt のパス
print txt 

print os.path.basename(__file__) # スクリプトファイル名
print os.path.abspath(__file__)  # スクリプトファイルの絶対パス

print os.getcwd()                # 実行時カレントディレクトリの絶対パス
 
 os.path にはいろいろな関数があります。
https://docs.python.jp/3/library/os.path.html
 

3、クラス
__init__が初期化関数になります。selfはインスタンス自身を表します。
  
class Clock:
    def __init__(self, hour, min, sec):
        self._hour = hour
        self._min = min
        self._sec = sec
    @property
    def hour(self):
        return self._hour

obj = Clock(11, 10, 0)
print(obj.hour) 

派生クラスは、次のように定義します。 
class 派生クラス名(基底クラス名):
  派生クラスの定義
 ...
 
派生クラスから基底クラスのメソッドを呼び出すには
super().基底クラスのメッソド()
と書きます。
 
メッソド名や変数名がアンダーバー(_)からはじまっていれば、 
非公開メソッド定義になります。
 
 
class Car:
    ''' 基底クラス '''
    def __init__(self, owner):
        self.car_type = "normal"
        self.owner = owner

   def show_status(self):
        ''' 状態を表示 '''
        print("owner:", self.owner)
        print("car_type:", self.car_type)
 
   def _test
        ''' 非公開メソッド''' 
        print("test.....") 

class Van(Car):
    ''' 派生クラス '''
    def __init__(self, owner):
        super().__init__(owner)
        self.car_type = "van"


【Python3】pythonの教科書(5) ~モジュール、ファイル読み書き

1、モジュール
(1)モジュールを取り込む
ファイル名がモジュール名となります。
モジュールを取り込む場合は、importを使います。
import モジュール名
hoge.pyというファイルを作った場合は、import hogeで取り込むことができます。

異なるパスにモジュールを配置した場合は、「ディレクトリの区切り」は"."で表します

(2) 標準モジュール
以下URLで確認できます。
https://docs.python.jp/3/py-modindex.html

(3)パッケージ管理ツール「pip」
パッケージ一覧登録「PyPI」(https://pypi.org/)は
 pip install パッケージ名
でインストールできます。
※pip uninstall パッケージ名、で削除できます
※インストールしたパッケージは、「c:\Users\ユーザ名\AppData\Local\Programs\Python\Python37-32(Pythonのバージョン名)\Lib\site-packages」に保存されます


2、ファイルの読み書き
①ファイルを開く open()
②ファイルを読み書きする read()/write()
③ファイルを閉じる close()

(1) ファイルの読込
test.txtファイルを読み込む例です。

a_file = open("test.txt", encoding="utf-8")
# 日本語読込の場合は、a_file = open("mt7_7_sjis.txt", encoding="sjis")
s = a_file.read()
a_file.close()


【ファイルを1行づつ読み込む場合】
また、with構文を使うと、close文を使わなくっても、自動的に処理の最後にclose文を実行してくれます。

key = "test"
with open("test.txt", encoding="utf-8") as tf:
    for i, line in enumerate(tf):
        # 文字列 key が行に含まれるか?
        if line.find(key) >= 0:
            print(i+1, ":", line)

(2) ファイルの書込
try-catchを使って、 test.txtファイルを書き込む例です。

a_file = open("test.txt", mode="w", encoding="utf-8")
try:
  a_file.write("test=\n今日は晴れです\n")
finally:

  a_file.close()

with構文を使って、ファイル書き込みを行います。

with open("test.txt", mode="w", encoding="utf-8") as f:
    f.write("test=\n今日は晴れです")


 (3) jsonファイルの読込/書込
import jsonを使用します。
①読込例
import json
filename = "test.json"
with open(filename, "r") as fp:
    r = json.load(fp)
    print("no=", r["no"])
    print("code=", r["code"])
    print("scr=", r["scr"])


②書込例
import json
# 辞書型のデータ(数値、タプル、文字列が使えます)
data = {
  "no": 1,
  "code": ("num", 1, 10),
  "scr": "test,test......",

filename = "test.json"
#オブジェクトをJSON文字列に変換
with open(filename, "w") as fp:
    json.dump(data, fp)