nekokichi2yos2.hatenablog.com
Open in
urlscan Pro
54.199.90.60
Public Scan
Submitted URL: http://nekokichi2yos2.hatenablog.com/
Effective URL: https://nekokichi2yos2.hatenablog.com/
Submission: On January 27 via api from US — Scanned from JP
Effective URL: https://nekokichi2yos2.hatenablog.com/
Submission: On January 27 via api from US — Scanned from JP
Form analysis
1 forms found in the DOMGET https://nekokichi2yos2.hatenablog.com/search
<form class="search-form" role="search" action="https://nekokichi2yos2.hatenablog.com/search" method="get">
<input type="text" name="q" class="search-module-input" value="" placeholder="記事を検索" required="">
<input type="submit" value="検索" class="search-module-button">
</form>
Text Content
ねこきちのプログラミング墓地 Home Swift,Xcode Python Competitive programming この広告は、90日以上更新していないブログに表示しています。 2022-04-24 【SQL】TXTからCSVを生成する プログラミング どうも、ねこきち(@nekokichi1_yos2)です。 SQLにデータを登録する際、予めcsvを用意すれば、簡単に登録できます。 ですが、テキストファイルからcsvを生成すれば、もっと手軽です。 今回は、テキストファイルをcsvに変換する方法を備忘録として書きます。 * 実行環境 * 解説 * テキストファイルを用意 * 拡張子をcsvに変換 * ※補足:SQLに登録 * 参考 実行環境 ・MacBookAir(M1 2020) ・MySQL 5.7.37 解説 テキストファイルを用意 例として、下記内容のtxtを用意。 # データ.txt 1,A,99 2,B,94 3,C,90 4,D,87 5,E,86 拡張子をCSVに変換 MacのNumbersで表示。 ※補足:SQLに登録 (データベース、テーブルの登録は省略します) 下記コマンドでSQLにcsvを登録。 mysql> load data local infile "csvのパス" into table テーブル名 fields terminated by ','; 下記の通りに出力。 +--------------+--------+--------+ | 学籍番号 | 名前 | 点数 | +--------------+--------+--------+ | 1 | A | 99 | | 2 | B | 94 | | 3 | C | 90 | | 4 | D | 87 | | 5 | E | 86 | +--------------+--------+--------+ 参考 blog.chatlune.jp #SQL #csv #txt nekokichi_yos2 1年前 読者になる 広告を非表示にする * もっと読む コメントを書く 2022-04-10 指定ファイルの更新時に通知してくれるスクリプト【シェルスクリプト】 プログラミング シェルスクリプト どうも、ねこきち(@nekokichi1_yos2)です。 とある企業のコーディング課題で、ファイルを監視する問題が出て、シェルスクリプトで実装しました。 備忘録として投稿します。 * 動作環境 * 仕組み * 監視対象のファイルパスを取得 * 変更日時を取得 * 監視開始 * 最新の変更日時を取得 * 変更日時、現在の変更日時を比較 * 変更日時を更新 * 実行結果 * ソースコード * 参考 動作環境 * MacBookAir(M1 2020) * macOS Monterey 12.1 * /bin/zsh 仕組み 監視対象のファイルパスを取得 監視したいファイルのパスを用意。 シェルの実行ファイル(.sh)と同じ箇所なら、ファイル名だけで良い。 filePath="xxxx/yyyy/zzzz" 変更日時を取得 ls -l -T、で対象ファイルの属性情報を取得。 -rw-r--r--@ 1 ユーザ名 staff 99 4 10 12:08:50 2022 ファイル名 タイムスタンプ(左から6,7,8番目)をawkコマンドで出力し、変数へ格納。 変数には、"○月○日xx:yy:zz"、が代入される。 last=`ls -l -T $filePath | awk '{print $6"月"$7"日"$8}'` 監視開始 while文で実行し続け、1秒度に監視。 while true; do sleep 1 ... done 最新の変更日時を取得 1秒後の更新日時を取得。 current=`ls -l -T $filePath | awk '{print $6"月"$7"日"$8}'` 変更日時、現在の変更日時を比較 もし1秒前と1秒後でタイムスタンプが違えば、変更がされているので、処理を実行。 今回だと、"updated: $current"、と出力 if [[ $last != $current ]] ; then echo "updated: $current" ... fi 変更日時を更新 変更されるたびに最新の更新日時を取得 last=$current 実行結果 xxxx@xxxx ディレクトリ % ./test.sh updated: 4月10日11:42:53 updated: 4月10日11:44:51 ソースコード filePath="ファイルのパス" last=`ls -l -T $filePath | awk '{print $6"月"$7"日"$8}'` while true; do sleep 1 current=`ls -l -T $filePath | awk '{print $6"月"$7"日"$8}'` if [[ $last != $current ]] ; then echo "updated: $current" last=$current fi done 参考 qiita.com mizti.hatenablog.com qiita.com atmarkit.itmedia.co.jp ritchiekotzen.hatenablog.com #シェルスクリプト #監視 #zsh nekokichi_yos2 1年前 読者になる 広告を非表示にする * もっと読む コメントを書く 2021-12-31 【サクメモ】進捗状況VER0.02:コーディング開始 個人開発 どうも、ねこきち(@nekokichi1_yos2)です。 理由は、良いアプリを作るために何をすべきかを考えてしまうから、です。 下記を参考に、プロトタイピングツールでアプリの完成図を作ろうとしました。 ↓ zenn.dev しかし、 * デザインの経験が0 * 0からデザインを生み出す経験が0 * そもそも、アプリの画面が思いつかない * 紙にデザインを書くのが面倒 等の理由で、何もしない日々が続いていました。 そこで、 * 個人開発に不可欠 * 今すぐに取り組める * モチベーションが湧く に当てはまることを考えた結果、コーディングが浮かびました。 * デザインはハードルが高くて苦痛な作業 * コーディングは前に進みやすい * まとめ:できることは最善の行動 デザインはハードルが高くて苦痛な作業 僕にとってデザインは、壁のようにそびえ立つ存在です。 何から始めればいいか、どんな手段で実行するのか、わからないことだらけです。 「じゃあ、デザインを学べばいいじゃん」と言われるかもしれません。 しかし、僕にとって重要なのは、デザインは進歩を認識しづらい点です。 昔、iPadとApplePencilでイラストを模写してた時期がありました。 個人開発で悩むのが、最初に何をするか、です。 好きな絵を自分の手で描くのは良い気分でした。 ですが、あれだけ集中して線を描いて色を塗ったのに、完成したのは1枚の絵。 今まで費やした努力の過程は、1枚の絵を見ても実感できません。 デザインは、完成するまでの過程に意味がなく、完成して絵は意味や形を宿す。 つまり、途中で達成感を味わいづらく、モチベーションが湧かないのです。 コーディングは前に進みやすい コードを書いていると、目的地へ前進していることを実感します。 どんなに簡単な処理でも、1つの成果物です。 例えば、Swiftで数字を計算する処理を書き、Xcodeのシミュレータで処理が正常に動くかを確認、します。 正常に動けば、 * コードを処理という形に完成させた * 自分が思いついたコードは正しい * 目的の処理を実現できた を実感します。 もし個人開発ならば、上記を何度も経験できるので、モチベーションを維持できます。 つまり、コーディングは好きなのでハードルが低く、小さな達成感を味わいやすいから継続しやすいのです。 まとめ:できることは最善の行動 小さなことでもいいから、行動し続けることは大切です。 行動した結果を得られれば、達成感を味わい、次の行動へのモチベーションにつながります。 個人開発は1人で開発を行うので、途中で投げ出したくなる時が何度もあります。 頭にアイデアが思い浮かんでも、実行に移せなければ、何の意味もありません。 成果は、何もしなければ生まれません。 結局、遠回りでもコツコツと続けられる人が得をする気がします。 #個人開発 nekokichi_yos2 2年前 読者になる 広告を非表示にする * もっと読む コメントを書く 2021-12-31 【SWIFT】TEXTVIEWで選択した部分の文字列を取得 Swift・Xcode プログラミング * 実現したいこと * 仕組み * textViewの文字列を選択 * 選択した文字列の開始位置、長さを取得 * カーソルが1文字以上を選択してるかを条件分岐 * 選択した文字列の開始位置、終了位置を取得 * 部分文字列を取得 * ストーリーボード * ソースコード * 参考 実現したいこと * 先頭~途中/末尾までの文字を取得 * 途中~末尾までの文字を取得 * 途中~途中までの文字を取得 仕組み 1. textViewの文字列を選択 2. 選択した文字列の開始位置、長さを取得 3. カーソルが1文字以上を選択してるかを条件分岐 4. 選択した文字列の開始位置、終了位置を取得 5. 部分文字列を取得 TEXTVIEWの文字列を選択 選択した文字列の開始位置、長さを取得 // 開始位置 let location = textView.selectedRange.location // 長さ let length = textView.selectedRange.length 文字列の取得に必要。 カーソルが1文字以上を選択してるかを条件分岐 if length <= 0 { return } else { // 文字列を取得する処理 } 文字選択の際に表示されるカーソルには、何も選択していない下記の状態が存在する。 ↓ もし条件分岐をせずに文字列を取得しようとしたら、下記のエラーが発生。 ↓ Thread 1: Fatal error: String index is out of bounds エラー箇所は文字列を取得する下記のコード。 (原因:文字列が選択されていない → locationとlengthが0 → offsetByが-1) ↓ let endIndex = textView.text.index(strIndex, offsetBy: location+length-1, limitedBy: textView.text.endIndex) 上記のエラーを回避するため、 * カーソルが文字列を選択 * カーソルが文字列を選択してない 場合で処理を分岐させた。 選択した文字列の開始位置、終了位置を取得 // strIndex:0番目(Index型の0) let strIndex = textView.text.startIndex // Index型の開始位置、終了位置 guard let startIndex = textView.text.index(strIndex, offsetBy: location, limitedBy: textView.text.endIndex), let endIndex = textView.text.index(strIndex, offsetBy: location+length-1, limitedBy: textView.text.endIndex) else { return } 仕組みを例えると、 1. String型“123456”がある 2. “45”を選択 3. location = 3, length = 2 4. startIndex = 3, endIndex = 4 startIndex, endIndexはIndex型。 (Appleのドキュメントより) Index型とは、文字の場所を示す値。 printで出力すると、不規則な数字が並ぶので、中身は気にしなくていい。 print(startIndex) // Index(_rawBits: 131329) 部分文字列を取得 textView.textの要素(文字)を、Index型の変数(startIndex, endIndex)を使い、範囲で指定。 ↓ print(String(textView.text[startIndex...endIndex])) // 選択した文字列 print(type(of: textView.text[startIndex...endIndex])) // SubString 仕組みを例えると、 1. 変数text = “123456”がある 2. “45”を選択 3. location = 3, length = 2 4. startIndex = 3, endIndex = 4 5. text[startIndex...endIndex] = “45” startIndexとendIndexでどの範囲の文字列を取得するかを指定している。 Appleのドキュメント、SubStringはStringを分割したもの。 そのままでもprint()で出力はできても、Labelのテキストなどに代入するなら、String型にキャストする必要がある。 (でないと、下記のエラーが出る) ↓ Subscript 'subscript(_:)' requires the types 'String.Index' and 'Int' be equivalent ストーリーボード ソースコード import UIKit class ViewController: UIViewController { @IBOutlet weak var selectedString: UILabel! @IBOutlet weak var textView: UITextView! override func viewDidLoad() { super.viewDidLoad() textView.delegate = self } } extension ViewController: UITextViewDelegate { // textViewDidChangeSelection:textViewの文字が選択されたら処理 func textViewDidChangeSelection(_ textView: UITextView) { let location = textView.selectedRange.location let length = textView.selectedRange.length if length <= 0 { selectedString.text?.removeAll() return } else { let strIndex = textView.text.startIndex guard let startIndex = textView.text.index(strIndex, offsetBy: location, limitedBy: textView.text.endIndex), let endIndex = textView.text.index(strIndex, offsetBy: location+length-1, limitedBy: textView.text.endIndex) else { return } selectedString.text = String(textView.text[startIndex...endIndex]) } } } 参考 developer.apple.com softmoco.com kimagureneet.hatenablog.com #Swift #プログラミング nekokichi_yos2 2年前 読者になる 広告を非表示にする * もっと読む コメントを書く 次のページ 検索 プロフィール nekokichi_yos2 とあるIT企業で働きながら、iOSエンジニアを目指す猫 / 共感性 目標志向 慎重さ 親密性 責任感 Twitter https://twitter.com/nekokichi1_yos2 GitHub https://github.com/CatLuck2 Qiita http://qiita.com/NEKOKICHI2 リリースしたアプリ https://apps.apple.com/jp/developer/yosuke-fujisawa/id1459005672 読者です 読者をやめる 読者になる 読者になる 10 このブログについて 最新記事 * 【SQL】txtからcsvを生成する * 指定ファイルの更新時に通知してくれるスクリプト【シェルスクリプト】 * 【サクメモ】進捗状況ver0.02:コーディング開始 * 【Swift】TextViewで選択した部分の文字列を取得 * 【サクメモ】進捗状況Ver0.01:コンセプト決め 人気記事 * 【Swift】画面を全て閉じて、ホーム画面に戻る * 【Swift】handlerとcompletionを変数/関数で作る * 【Swift】RealmStudioでRealm内のデータを閲覧する方法 * 【Swift,Xcode】Cannot use instance member...というエラーの対処法 * 【Swift】WKWebViewでWebページを表示 月別アーカイブ * ▼ ▶ 2022 (2) * 2022 / 4 (2) * ▼ ▶ 2021 (4) * 2021 / 12 (3) * 2021 / 1 (1) * ▼ ▶ 2020 (35) * 2020 / 12 (1) * 2020 / 9 (4) * 2020 / 8 (4) * 2020 / 7 (12) * 2020 / 4 (10) * 2020 / 3 (4) * ▼ ▶ 2019 (10) * 2019 / 4 (2) * 2019 / 2 (5) * 2019 / 1 (3) * ▼ ▶ 2018 (107) * 2018 / 12 (14) * 2018 / 11 (26) * 2018 / 10 (52) * 2018 / 9 (15) カテゴリー * プログラミング (130) * Swift・Xcode (126) * Python (17) * teratail (13) * その他 (7) * 競技プログラミング (7) * IDE (2) * Twitter (2) * VSCode (2) * レビュー (2) * 個人開発 (2) * シェルスクリプト (1) Twitter ねこきちのプログラミング墓地 Powered by Hatena Blog | ブログを報告する 引用をストックしました ストック一覧を見る 閉じる 引用するにはまずログインしてください ログイン 閉じる 引用をストックできませんでした。再度お試しください 閉じる 限定公開記事のため引用できません。 読者です 読者をやめる 読者になる 読者になる 10