MacBookPro US配列 caps lookを無効にしてcontrolを割り当ててIJKLキーで矢印キーに割り当ててみた(Karabiner)
はじめに
たったさっきまでfn + IJKLで矢印キー(Arrow)に設定して喜んでました。
久々にウキウキと記事を書いて投稿してから気づきました。
あれ?...
どうせcaps lock無効にして何かに置き換えるなら
使用頻度の高いcontrolの方が良くない...?
...というわけでcontrol + IJKLで矢印キーにします。
fn+IJKLの記事はこちら hakonebox.hatenablog.com
環境
- MacBookPro US配列
- Karabiner
設定
Karabinerでcontrol+IJKLを矢印に割り当てる
Add ruleから追加します。
caps lockを無効にする
システム環境設定→キーボード→修飾キー
caps lockをアクションなしに設定します。
※ この時点でcapslockをcontrolにしようとしていたのですが、
Kanabinerでcapslockがcontrolとしてうまく認識できなかったので、
無効にしてKnabiner側で置き換えることにしました。
Karabinerでcaps lockをcontrolに割り当てる
add itemからcaps lockをleft_controlと設定します。
さいごに
はじめからこっちで思いつけばよかったです。
MacBookPro US配列 caps lookを無効にしてfnを割り当ててIJKLキーで矢印キーに割り当ててみた(Karabiner)
はじめに
MacBookPro使ってます。
矢印キー(ArrowKey)が地味に打ちにくいので
Karabinerでfn + IJKLキーで矢印キーにしていたのですが、
矢印を打つごとにfnに左手小指を持っていくのは地味に面倒だったので、
もっと楽にできないかと考えました。
左手をほぼ動かさずに打てるキーで使えそうなキーを考えたところ、
caps lockキーを使用していなかったので、
無効にしてfnに割り当てられないかと考えてやってみました。
環境
- MacBookPro US配列
- Karabiner
設定
Karabinerでfn+IJKLを矢印に割り当てる
設定していなければAdd ruleから追加します。
caps lockを無効にする
システム環境設定→キーボード→修飾キー
caps lockをアクションなしに設定します。
Karabinerでcaps lockをfnに割り当てる
add itemからcaps lockをfnと設定します。
さいごに
思ったより簡単にできました。
Tenka1 Programmer Beginner Contest 2019の反省会
はじめに
Tenka1 Programmer Beginner Contest 2019に参加しました。
競プロは通算2回目の参加。 前回のAtCoder124は仮眠を取ろうとしたら寝坊して1時間遅れで参加したので、 開始から解いたのは実は今回が初めてでした。
BeginnerSelectionを全てとき、 いくつかの過去問を解いていたことでABCは解けるはずと 変に慢心していました。
悲しみをどうしていいのかわからないので、 気持ちを忘れないように書きなぐっておこうと思います。
戒め。
反省点
A - On the Way
'No'を'no'と記載してしまい痛恨のWA
早く提出しなければいけないという焦りでミスタイプを見逃してしまいました。勿体無い。
確認10秒!! 修正10分!!
A<C<BまたはB<C<Aか判断して条件式で出すだけ。
提出したコード
a,b,c = map(int,input().split()) print("Yes" if (a<c and c<b) or (b<c and c<a) else "No")
B - *e**** ********e* *e****e* ****e**
pythonの文字列の一文字だけ変更はできないことを忘れていました。
エラーコードで思い出せてよかったです。
今回のミスで一生忘れなくなりそう...。
それはそれでいいことかと思うことにします。
文字列をリストにする。 特定の文字以外を見つけたら文字を変更する。 リストをjoinメソッドで繋げる。
提出したコード
N = int(input()) S = list(input()) K = int(input()) buff = S[K-1] for i in range(len(S)): if buff != S[i]: S[i] = '*' print("".join(S))
C - Stones
大反省案件。
今思うとこんな考え方をしてしまったのが恥ずかしい。
変な法則性を見つけていくつか試して実装してしまいました。
たまたま見つけたのですが、 '#'と'.'の数を数えて差が少ない方を足していけば答えになるという考え方。
問題説明にある例は通るし、自分でサンプルとして考えたinputは処理できていたので、信じ切ってしまっていました。
制限時間がきて冷静になって問題を見ると、 ........か....####か######になるパターンだけってことに気が付いたので 本当に勿体無い時間を過ごしてしまったと思います。
戒めのためにコードを記載。
提出したコード(WA)
# WA N = int(input()) S = list(input()) sharp_num =[] dot_num = [] search = '#' count = 0 for c in S: if search == '#': if c == search: count += 1 else: sharp_num.append(count) count = 1 search = '.' else: if c == search: count += 1 else: dot_num.append(count) count = 1 search = '#' if search == '#': sharp_num.append(count) dot_num.append(0) else: dot_num.append(count) total = 0 for i in range(len(sharp_num)): total += min(sharp_num[i],dot_num[i]) print(total)
全体を通して
- Aの問題を解く
- Aの判定が終わる前にBを解き始める
- Bの途中でAがWAと気づき修正
- 混乱しながらもBを解く
- 混乱してすがる思いでCの変な法則に執着する
- 問題文の問題がクリアできたので提出後判定を確認する前にD開始
- Dの途中でCができていないことに気がつき冷静さが完全になくなる
これからの課題
過去問を解くのを継続し、知らないアルゴリズムを身につけ、 問題を解く手札を増やす。
さいごに
確認10秒!! 修正10分!!
根拠のない法則性に賭けるのはダメ絶対!!!
AtCoder ABC122-Aの解法メモ
はじめに
AtCoder122のA問題について、 if文で記載したもののfindを使用するともっとスッキリ記載できることを知ったのでメモ
問題
AtCoder 星には四種類の塩基 A, C, G, T が存在し、A と T、C と G がそれぞれ対になります。
文字 bが入力されます。これは A, C, G, T のいずれかです。塩基 bと対になる塩基を表す文字を出力するプログラムを書いてください。
最初に解いた方法
いい方法が思いつく前にif文を組んだ方が早いと感じて脳死戦法しました
b = input() if b == 'A': output = 'T' elif b == 'C': output = 'G' elif b == 'G': output = 'C' elif b == 'T': output = 'A' else: pass print(output)
解き直した方法
print("TGCA"["ACGT".find(input())])
ACGTを文字列とし、findメソッドでインデックスを求め、 対になる文字列を求めます。
コード量が少ないので、コーディングの時間短縮できそうです。
メソッド
findメソッド
文字列検索に使用するメソッドです。
検索対象のインデックスを返してくれます。
見つからなかった場合は-1となります。
s = 'hakoneko game dev' print(s.find('d')) # 14 print(s.find('game')) # 9 print(s.find('app')) # -1 print(s.find('D')) # -1
rfindメソッド
findは文字列の先頭から検索しますが、rfindを用いると、 後ろから検索します。
s = 'hakoneko game dev' print(s.find('k')) # 2 print(s.rfind('k')) # 6
Python 各桁の和を求める
はじめに
AtCoderのABC0838の問題をしていて、 思いつけなくて悔しかったやり方を見たのでメモ
やりたかったこと
各桁の数字を足した値を求める
strを用いた方法
python、for文で文字列の一文字ずつ順番に参照できることを利用した方法
def digit_sum2(num): total = 0 for digit in str(num): total += int(digit) return total
提出していたコード
digit_sum関数内で、値を10で割った余りを求め、 その後桁をずらす方法で実装していた。
def digit_sum(num): total_num = 0 while num > 0: total_num += num % 10 num //= 10 return total_num num_list= [] n, a, b = map(int, input().split()) for i in range(1,n+1): num = digit_sum(i) if num >= a and num <= b: num_list.append(i) print(sum(num_list))
さいごに
アルゴリズムの引き出しが上手く開かなかったです。 競プロは他の方の考え方を知れていいですね。
Unity1週間ゲームジャム[つながる]"ふらいんぐつながりまゆげ"を作った話
はじめに
今回も参加しましたUnity1週間ゲームジャム!! 今回も振り返っておきましょう。
サムネとイラストは、はいき丸さん作成です。 はいき丸 (@haikimaru) | Twitter
めちゃイカしたシャツをデザインしてもらいました。
リンク
ここからあそべます。
ボリュームとか事前に考えたこと
今回は時間が確保できず、作業できても1日程度でした。
そのため、初めから大規模なものは考えず、 簡単操作ですぐに結果がわかるようなゲームデザインを考えました。
あと32時間でつながるゲーム作ります
— はこね (@hakone_san) March 15, 2019
実作業時間は10時間程度でした。
システム周り
ペイント機能
テクスチャへの書き込みは下記の記事を参考にさせていただきました。
はこねこが描かれた画像の上に、透明なテクスチャを重ねています。
- 少し左にずらした様子
- わかりにくいですが透明なものがあります
透明なテクスチャに眉毛を描くようにすることで、 透明なテクスチャを動かすことで、眉毛のみが飛べるようにしました。
画像ツイート機能
眉毛を描くのが大きなポイントのため、描いた眉毛をツイートして共有できたほうが面白いと考え実装しました。
画像付きのツイート機能は下記の記事を参考にさせていただきました。
imgurを使用しています。
マウス移動量
X軸、Y軸のマウスの移動量の絶対値を取得し、 多い値をインク(まゆげーじ)から引くようにしています。
float mouse_x_delta = Input.GetAxis("Mouse X"); float mouse_y_delta = Input.GetAxis("Mouse Y"); ink_value -= Mathf.Max(Mathf.Abs(mouse_x_delta),Mathf.Abs(mouse_y_delta));
飛行量の算出
飛行する距離は、完全なランダムではなく、 マウスの移動距離や、場所、残りインクの量によって 乱数の最大値、最小値を決定しています。
条件を満たすほど飛距離が伸びるようにしています。
fly_time = Random.Range(randMin,randMax);
カメラの動き
カメラの動きを眉毛に合わせてしまうとはこねこが見えなくなってしまうため、
まゆげの上昇にあわせてカメラを後ろに引くようにしています。
if(GameManager.game_mode == GameManager.GAME_MODE.FLYING){ this.gameObject.transform.Translate ( 0, camera_y_speed, -camera_z_speed); }
素敵なつながり眉毛
素敵なまゆげ?を描いていただいたので、いくつか紹介いたします。
餌をあたえないでください
わたしの眉毛は254cm飛びました。 https://t.co/akuNV5PGwV
— くまたろ (@kumataro1299) 2019年3月17日にあうじゃん
わたしの眉毛は549cm飛びました。 https://t.co/pVBOXACuqr
— いざわ (@green071_) March 17, 2019つ よ そ う
なかなか良いガンダムだと思う
— ヤマト (@minotarow) March 17, 2019
わたしの眉毛は124cm飛びました。 https://t.co/U43iznFH6P
なんでまゆげかいてくれないんですかぁぁぁあああー!!!
おわりに
\眉毛を飛ばすってなんだよ(哲学)/
わたしの眉毛は572cm飛びました https://t.co/eYcMSf8S17 #unityroom #unity1week
— U.N.Artemisia=よもぎ (@yakumomao) 2019年3月17日
眉毛を飛ばすってなんだよ(哲学)
Django 2.xx でForeignKeyのon_deleteに関するエラーメモ
はじめに
DjangoGirlsでつまづいたところのメモ。
TypeError: __init__() missing 1 required positional argument: 'on_delete'
が発生した。
その時のコード
class Post(models.Model): author = models.ForeignKey('auth.User') title = models.CharField(max_length=200) text = models.TextField() created_date = models.DateTimeField(default=timezone.now) published_date = models.DateTimeField(blank=True,null=True) def publid(self): self.published_date = timezone.now() self.save def __str__(self): return self.title
環境
原因
ForeignKeyはversion2からは引数としてon_deleteを指定することが必須となっていた。
解決方法
第二引数にon_deleteを渡します。
from django.db import models from django.utils import timezone class Post(models.Model): author = models.ForeignKey('auth.User',on_delete=models.CASCADE) title = models.CharField(max_length=200) text = models.TextField() created_date = models.DateTimeField(default=timezone.now) published_date = models.DateTimeField(blank=True,null=True)
参考にさせていただきました
Django2.0から必須になったon_deleteの使い方 - Django2の実力をつけるチュートリアルサイトDjangoBrothers