- 1. あなたは本当に「プログラミングができない、向いてない」のか? 〜うるう年判定プログラムで考える〜
- 2. python学習のアウトプット
- 3. Djangoのカスタムユーザーでの認証と管理画面のカスタマイズ
- 4. Homebrewで管理していたPythonをpyenv移行する。(覚書)
- 5. データフレームのバリデーションを実現するためのpandera入門〜ダミーデータによる利用例の紹介〜
- 6. AtCoder Beginner Contest 248 A~D 4完記事
- 7. Pythonで独立した実行に対して重複しないようにJobを与えたときのメモ
- 8. Magicodeという簡単に稼げるエンジニア向けブログサービスを作ったので使って欲しい
- 9. 自作AIがスーパーマリオ1-1をやっとのことでクリアした
- 10. PythonでGoogleAnalyticsからデータを取得する
- 11. BMPファイルを数列に直す
- 12. 化石エンジニアの野良リカレント教育・Kaggle~化石がレベルアップ・Contributorになった!~
- 13. 競馬をより楽しむために、AIを自作した話
- 14. AWS LambdaでPython基礎~Amazon S3とAmazon Translateを利用する
- 15. EV3のポートをふやしたい with “EV3 Sensor Multiplexer”
- 16. エラー回避録1(初投稿)
- 17. 再帰をループに変換(ネタ)
- 18. AWS Cloud9でPython基礎~Amazon S3とAmazon Translateを利用する
- 19. Pythonで様々なPDFフォーマットに電子印を一括押印
- 20. 【手順解説付き】LINEBotでグラフ付きの天気予報を毎朝スマホに通知する
あなたは本当に「プログラミングができない、向いてない」のか? 〜うるう年判定プログラムで考える〜
## この記事の目的
– 「プログラミング学習につまずいている」
– 「基礎的な式や文は覚えたけど、応用できずに悩んでいる」そんな人達に、「自分がうまくいかない原因が何なのか」を考えるきっかけにしてほしいです。
特に、「プログラミングで何か問題を解く」的なことが苦手な人に、少しでも参考になればと思います。
## 「プログラミングができない」をもっと細かく切り分けてみる
「プログラミング難しい、向いてないかも…。」と思う前に、「自分が何につまずいているのか」を分析してみましょう。
### 実は、難しいのはプログラミングじゃない?
プログラミング自体は、あくまでコンピュータに何かを実行させるための命令でしかありません。
なので、そのやりたい「何か」自体が難しい場合、自ずとそれをプログラミングするのも難しくなります。
ただ、目の前で取り組んでいるものが「プログラミング」なので、その状態を「プログラミングが難しい」と考えてしまう人も多いのではないでしょうか。
## 例: 「うるう年判定プログラム」がうまく書けないケース
スクールの課題でもよくある(ら
python学習のアウトプット
私がこれまでに学習したpythonの知識をここにアウトプットします。初回である今回はテキストで学んだことを実際に私自身が作成したアプリのプログラムを掲載して、投稿させていただきます。
作成したアプリは名付けて、「ファイル起動・整理APP」です。自身のPCにてよく使用するファイルへのショートカット及びファイル移動なども可能にしたアプリケーションです。それでは実際のアプリケーションとコードを下に掲載いたします。
メニュー画面(実行結果)

コード全体
# インポート
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
from tkinter import filedialog
import subprocess
import os
import
Djangoのカスタムユーザーでの認証と管理画面のカスタマイズ
Djangoでデフォルトの認証モデルではなくカスタムユーザーを使用した認証の実装してみました。デフォルトの管理画面での表示の挙動が思っていたのと異なっていたのでメモ。
# 前提
Django==4.0.3# 初回のマイグレーションまでに行う事
Djangoは初回のマイグレーション実行までに認証モデルをカスタムする必要がある。デフォルトのユーザーモデルからカスタムユーザーモデルへの切り替えはアプリケーションを作り直すより根気の必要な作業になる恐れがあるとのこと。そのためデフォルトから変更する予定がなくても最初からカスタムユーザーモデルで開発することが推奨されている。
次の3ステップを初回マイグレーション前に行う。
1. models.pyにカスタムユーザーのモデルを定義
2. models.pyにカスタムユーザーで定義されたモデルを操作するマネージャークラス
3. setting.pyで認証に使用するユーザーモデルを設定
### 1. models.pyにカスタムユーザーのモデルを定義
カスタムユーザーは2通りで定義ができる。
#### AbstractUserクラスを継承する
Homebrewで管理していたPythonをpyenv移行する。(覚書)
## 目的
ローカルでPythonの開発環境を整備するため。## 背景
Homebrewで管理していたPythonを使用していると、poetryで利用するPythonのバージョンと合わなくなってしまった。また、pyenvを利用して、ローカルやグローバルののPythonのバージョンを変更しようとしてもHomebrewでインストールしたPythonを優先して参照していた。
そのため、Homebrewを使用したグローバルでのPythonをアンインストールし、pyenvに環境を移行させる。## 環境(現状把握)
以下、Pythonのバージョンとpyenvを利用してバージョンを確認した際の挙動を記述する。
“`
% brew deps python –tree
python@3.9
├── gdbm
├── mpdecimal
├── openssl@1.1
│ └── ca-certificates
├── readline
├── sqlite
│ └── readline
└── xz
“`試しに一つ、アンインストールして挙動を確認する。
“`
データフレームのバリデーションを実現するためのpandera入門〜ダミーデータによる利用例の紹介〜
## はじめに
[pandas](https://pandas.pydata.org/)のデータフレーム(`pandas.DataFrame`)は、Pythonで機械学習やデータ分析をする多くの人に利用されています。そんなPythonにおけるデータフレームですが「不正な値が格納されてしまう」というような課題が挙げられます。それに加え、特に問題なのが、Pythonが動的型付け言語であることにより、不正な値が格納されていたとしてもエラーが発生せず、開発者が気づかないという恐れがあるという点です。筆者(@daikikatsuragawa)も、ある項目に対してあり得ない値を格納したものの、その直後に気づけないということがありました。しかし、機械学習やデータ分析において、データフレームにドメインの観点で妥当なデータが格納されていることが非常に重要であると考えられます。このような課題の改善策としてデータフレームのバリデーションを実現するためのライブラリであるpanderaを紹介します。ぜひ、本記事を読んで“pandera入門”をしていただけたら、と思います。
## pandera
pande
AtCoder Beginner Contest 248 A~D 4完記事
アルゴリズムの学習改善のための自身の備忘録及び学習の一環として記事を書くことにしました.
読んでくれた方で何かありましたら気兼ねなくコメントしてください.お待ちしております.# [A – Lacked Number](https://atcoder.jp/contests/abc248/tasks/abc248_a)
## 問題文 概要
$0$~$9$の中に含まれていない整数は何か## 制約と入力
制約
>$S$ は数字のみからなる長さ $9$ の文字列である。
>$S$ の文字はすべて相異なる。入力
>入力は以下の形式で標準入力から与えられる。
>$S$## 考察
全探索を用いて,含まない物を探索する.
$0$~$9$まですべてから探索する.## サンプルコード
“`python:a.py
s=set(list(input()))
ans=-1
for i in range(10):
if str(i) in s:
continue
ans=i
print(ans)
“`# [B – Slimes](https://at
Pythonで独立した実行に対して重複しないようにJobを与えたときのメモ
## はじめに
まずは問題設定を記述します.
1. $N$ 個の独立した実行があり,それぞれの実行に対して,Uniqueな config を渡し,それに基づいた実行を独立に処理する
2. SQL alchemyを利用したデータベースに対して,configを渡す毎に対応する行の `run flag` を `True` にする
3. ただし,SQL alchemyに対する `SELECT` クエリと `UPDATE` クエリの間に他の実行が `SELECT` クエリを実行してしまうと2つの実行に対して同一の config が渡されてしまうためこれを何とか避けたい.## 解決策
以後,Tokenの生成は`temp` ディレクトリ内において完結するものとする.
1. $N$ 個の実行開始時にただひとつだけ `target.token`という空ファイルを生成する.
2. 各実行に対してUniqueなTime hashを生成し,それぞれ `target_
Magicodeという簡単に稼げるエンジニア向けブログサービスを作ったので使って欲しい

# はじめに
[「Jupyter Notebookを一瞬で記事にできて誰でも収益化できるサービス作ってみた」](https://qiita.com/Taiki92777/items/f408846297526addba4f)という記事を以前書きましたが,そのサービス名をNoteboxから**Magicode**に変えて再リリースしました!https://jp.magicode.io/
https://qiita.com/Taiki92777/items/f408846297526addba4f
# Magicodeとは?
QiitaさんやZennさんのようなエンジニア向けのブログサービスです。Magicodeという名称は,magicとcodeを組合せた造語です。基本的にはマークダウンで自分のブログが書けるサービスですが,特殊な機能が以下の4つほどあります。# 機能1. ブラウザ上でコードを実行できる
自作AIがスーパーマリオ1-1をやっとのことでクリアした
# はじめに
今更感満載ですが・・・
**↑ ↑ ↑ このマリオ君が**
**↑ ↑ ↑ こうなるように頑張った話!**
Gitは以下。環境構築の流れとかも以下を参照。
https://gitlab.com/teten927/mario-ai.git
# 開発環境
### プラットフォームとか
– Hyper-V
– Ubuntu18
– Anaconda
– Python3.8
– Tensorflow2.2.0など、Pythonライブラリ色々
PythonでGoogleAnalyticsからデータを取得する
# この記事の内容
– データを取得する基本的な方法
– filterを使ったデータの絞り込み方
– よく使うdimensionsとmetrics# 参考記事
– 公式ドキュメント
– [はじめてのアナリティクス Reporting API v4: サービス アカウント向け Python クイックスタート](https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/service-py?hl=ja)
– dimensionsとmetricsの一覧
– [UA Dimensions & Metrics Explorer](https://ga-dev-tools.web.app/dimensions-metrics-explorer/)
– キーファイルとビューIDの取得方法
– [PythonでGoogleAnalyticsから情報を取得するには](https://www.w2solution.co.jp/tech/2021/07/16/eg_ti_df_py
BMPファイルを数列に直す
これはロボットのコスペースというシミュレーション競技で使うプログラムです。
https://github.com/2lu3/cospace2019-ninja-share/tree/master/image2array
このツールを参考にしました。


この二つを合成して36*27の数列にしたい
“`python main.py
import tkinter as tk
import time
from PIL import Image, ImageTk
import cv2
import os
impo
化石エンジニアの野良リカレント教育・Kaggle~化石がレベルアップ・Contributorになった!~
# 前提
数学力・統計力・技術力がほぼすべて「ゼロより低い、マイナス」の化石エンジニア・アンモナイトがエンジニアとしての生き残りを目指して~~賞金が欲しくて~~ 、Kaggleに挑戦する。
たぶん、Kaggleに挑戦する記事の中で、もっともレベルが低いと思う。
そもそも、なんでKaggleに挑戦するのかとゆーと、下記のよーなリカレント教育(大人の再教育)プランを考えているからです。アンモナイトが考えた化石エンジニアの進化論:
ふりだし:「アンモナイト=太古の海中でたゆたってる化石エンジニア・Lv3」
→アジャイル開始:Done!
→社外コミュニティ参加:Done!
→スクラム経験:Done!
→CSM取得:Done!
→常識(他社研修視聴):Done!
→知識の深堀り=Kaggle:in progress
→知識の深堀り=アプリ作成:To do
→あがり:陸上(肺呼吸):人権を得る# 1:現在の状況
前回の記事から、チュートリアルコンペ・『タイタニック号』に挑戦中。
ナビゲーターとなってくださる御本は下
競馬をより楽しむために、AIを自作した話
# まえがき
こんにちは。馬風(うまかぜ)と申します。
名前に”馬”が入っているように、私は競馬大好き人間です。
自分の予想がハマったときの快感に取り憑かれました。
予想をするのも良いのですが、私は答え合わせ(馬券が当たるor外れる)の瞬間が一番楽しいです。# 我が救世主、競馬AI
さて、皆さんはこんなジレンマに悩んだことはありませんか?**予想はちゃんとしたいけど、全レース勝負したい! でも時間も労力も必要……**
私も大いに悩まされました。
楽しむために、答え合わせの回数を増やしたいけど、テキトウな予想だとなぁなぁになってしまって賭けるのもはばかられる…。
予想紙などに丸乗りしたりするのではなく、あくまで自分の力でたくさん予想したい。それを解決したのが、**競馬予想AI**でした!
# 競馬AIがピッタリ
AIに任せるのも、他人の丸乗りと同じと思われる方もいるでしょう。でも、自分で予想するのと共通する大事な要素があるんです。それは……**自分の努力で成績を上げられること**
AIの精度を上げるための工夫は無限にあります。
プログラミングの醍醐味とも言えるでしょ
AWS LambdaでPython基礎~Amazon S3とAmazon Translateを利用する
2022/4/6(水)に行われたAWSセミナー「Pythonの基礎から学ぶ!サーバーレス開発はじめの一歩」で構築したサーバレスアーキテクチャ環境の復習。
# 構成図
AWS Lambdaを起動し、S3バケットにアップロードした英語のテキストを、翻訳して返す簡易アプリケーションをPyhonで開発する。
[「AWS Cloud9でPython基礎~Amazon S3とAmazon Translateを利用する」](https://qiita.com/emiki/items/b95fad815d9f8e360dd0)で作成したPythonコード`index.py`を、AWS Lambdaに移植する。
# 1.Lambda関数の作成
AWSマネジメントコンソールでLambda画面を開き、「関数の作成」から以下設定し、その他項目はデフォルトで「関数
EV3のポートをふやしたい with “EV3 Sensor Multiplexer”
# EV3のポートを増やせまほし with “EV3 Sensor Multiplexer” #1
※Python3と[ev3dev-python](https://ev3dev-lang.readthedocs.io/projects/python-ev3dev/en/stable/)についてある程度の知識がある前提での記事です。
[この方の記事](https://qiita.com/masterkeaton12/items/938457911b0f3f25e161)をもとに環境構築をしておいてください。## まえがき
EV3で遊んでいると誰もが**ポート数の壁**に当たるでしょう。
それを解決する手段はいくつか有り、EV3本体を2つ接続するデイジーチェーンはその代表的なものです。ですが、デイジーチェーンには**ロボットが重くなってしまう**というデメリットがあります。現に私も某ロボット大会でそれを思い知らされました。
そこで使ったのが[EV3 Sensor Multiplexer](http://www.mindsensors.com/ev3-and-nxt/23
エラー回避録1(初投稿)
# はじめに
エンジニアなり立てで、使ったことがまだないフレームワークに触れてみようとおもい、
Pythonのフレームワークである「Django」を[Corey Schafer](https://www.youtube.com/watch?v=qDwdMDQ8oX4)という方のYoutubeで学習しております。
※英語に自信のある方はおすすめです!ぜひ参考にしてみてください!# 今回のエラー
確認のためにコードを書きrunserverしたところ、
***A server error occurred. Please contact the administrator***
とだけブラウザに表示されました。ぴえん。コマンドプロンプトを見ると
**ZoneInfoNotFoundError(f”No time zone found with key {key}”)**
…ふむふむタイムゾーンが見つからないと。“`ruby:settings.py
LANGUAGE_CODE = ‘ja’TIME_ZONE = ‘Asia Tokyo’
USE_I18N = True
再帰をループに変換(ネタ)
# はじめに
ループは理解できるが再帰が理解できないという人がいるようですが、そのような人に再帰を理解してもらうために、再帰をループに変換したいと思います。
# 原理
プログラミング言語処理系における、関数呼び出しの実装方法として、以下のようなものがあります。
* 関数呼び出しの際は、現在のローカル変数と、関数呼び出しから戻った際の再開位置を、スタックに積む。新たにローカル変数を確保して、関数の引数を代入したうえで、該当関数の先頭にジャンプする
* 関数から戻る際は、ローカル変数と再開位置をスタックから取り出して、再開位置にジャンプするつまり、スタックがあってジャンプができれば、あらゆる関数呼び出し(再帰呼び出しを含む)を表現できます。ジャンプを無限ループ+条件分岐で表現すれば、ループに変換できたことになります。
# 実践
こちらの再帰関数をループに変換しましょう。(言語はPythonを使用)
“`python
def fib(n):
if n < 2: return n else: return fib(n-1) + fib(n-2) ```
AWS Cloud9でPython基礎~Amazon S3とAmazon Translateを利用する
2022/4/6(水)に行われたAWSセミナー「Pythonの基礎から学ぶ!サーバーレス開発はじめの一歩」で構築したサーバレスアーキテクチャ環境の復習。
# 構成図
Amazon S3バケットに格納された英語のテキストを AWS Cloud9で読み取り、Amazon Translate で翻訳して S3バケットにアップロードする簡易アプリケーションをPyhonで開発する。
# 1. S3 バケットの準備
翻訳する前のファイルを入れる S3 バケットと、翻訳語のファイルを入れるS3 バケットを作成しておく。
– learn-python-YYYYMMDD-xxxxx-input
– learn-python-YYYYMMDD-xxxxx-outputを読み込み、電子印を押印し、OUTPUTフォルダに保存するプログラムです。

自分が住んでいる場所や、入力した地名の天気予報をグラフとテキストで分かりやすく通知するLINEBotを作成しました。
—
**この記事は、以下のような読者の方々に向けて書いています。**
#### 1. LINEBotを作成してみたいけど、Botの実装がめんどくさい
**記事の読み方**
[導入方法](#-導入方法)に従って手順を進めていけば、コードを書くことなくこの天気予報Botをデプロイできます!LINEBotをはじめとするWebアプリケーションのデプロイをやって理解してみたい方は、まずそちらから読んでみてください。
#### 2. 普通に天気予報を毎朝通知するBotがほしい
**記事の読み方**
[導入方法](#-導入方法)に従っ