geek-branch

書き置きです。

#include <bits/stdc++.h>の波線がどうしても消えなかった

今までWindowsVisual Studioを使用して競技プログラミング出てたんだけど、本腰を入れようということで

この辺の記事なんかを参考にさせてもらいながらMacの環境を整えた、ら、なぜか#include <bits/stdc++.h>の波線が恐ろしく消えなかった。昔ちょっといじくって変な感じになったのを放置してたツケが来た。

結論から言うとなんかbrewでインストールしたgccシンボリックリンクがうまく貼れてなかったらしい。シンボリックリンクの貼り直しをして再起動したら波線は消えた。

Macのデフォルトシェルがzshに変わったからか?とかいろいろ考えてたんだけど大丈夫だった、と思う(一応コンパイル &実行シェルはbashを指定するよう変更した)。

c_cpp_properties.jsonのincludePath以外もなんか見てるのね(シンボリックリンクがちゃんと貼れていなかった=gccではなくclangを使っていた…?ただ波線は出てたものの動いてはいた…)。

なんつってる間に3時間使っちゃってますよ、あ〜あ、会社終わりの辛いとこね、これ

帝京大学理工学部情報科学科通信課程に行くことにした

今年から、CSの学位取得のため帝京大学理工学部情報科学科通信課程に通うことにした。

 

せっかく自分の好きな分野を知ることができたのだからそれについて深く学びたい、という思っている。

ただ、大学に入るべきかどうかというのは正直ものすごく悩んだ。

働きながらの単位取得というものにかなり不安を感じている。案件の状況によっては残業や休日出勤が考えられるからだ。試験日に出勤となると無条件で留年が決まってしまうのでは…なんてネガティブな考えばかり浮かんでいた。

4年というのもかなり長く感じた。相当な時間を割くことになるだろうし、好きに勉強ができるのとどちらがいいのか考えていた。

だが、休学や退学を考えられないわけでもないし、CSの基礎科目や数学は自分でも学ばないといけない分野でもあるため入学を決めた。

入学を決めた一番の理由は、将来ずっと後悔し続けるのは嫌だなという感情だと思う。1年以上も悩んでいたものをやめてしまうとこの先ずっと後悔すると感じた。多分この感じだと、今やらなくてもいつかやるだろうし。あとなんか、CSの学位ってコンピュータ好きとして惹かれるものがある。

学習時間についてはかなり不安を感じているが、学習しているものが何に繋がっているか、というイメージは浮かびやすいだろうと思うのでうまくやっていきたいと思う。がんばろ。

Xcode エラー [Unexpectedly found nil while implicitly unwrapping an Optional value]

使用環境: 

Xcode: Version 11.3.1 

エラー内容: [Unexpectedly found nil while implicitly unwrapping an Optional value]

 

prepareで遷移先のView ControllerのImage Viewに代入しようとしていることが原因だった。

prepare時にはまだImage Viewは用意されていないらしい。

遷移先のView ControllerクラスにUIImage型の変数を持たせそちらに代入後、viewDidLoadで代入することで解決できた。なるほど。

C++11以降で使える時間計測クラス

前々から読みたかったOptimized C++をやっと読めたし、影響を受けてホットスポットの検索やパフォーマンス改善時に使える時間計測クラスをなんとなく作った。

Qiitaに載せていたが大した内容でもないしブログに移行。
使用したのはC++11より追加されたchrono。

#include <iostream>
#include <chrono>

class measure_time
{
	std::chrono::time_point<std::chrono::steady_clock> start_time;
	std::chrono::time_point<std::chrono::steady_clock> end_time;

public:
	enum unit
	{
		nanoseconds,
		microseconds,
		milliseconds,
		seconds,
		minutes,
		hours
	};

	measure_time() { start_time = std::chrono::high_resolution_clock::now(); }

	auto lap_time(int unit)
	{
		end_time = std::chrono::high_resolution_clock::now();

		switch (unit)
		{
		case unit::nanoseconds:
			return (end_time - start_time) / std::chrono::nanoseconds(1);

		case unit::microseconds:
			return (end_time - start_time) / std::chrono::microseconds(1);

		case unit::milliseconds:
			return (end_time - start_time) / std::chrono::milliseconds(1);

		case unit::seconds:
			return (end_time - start_time) / std::chrono::seconds(1);

		case unit::minutes:
			return (end_time - start_time) / std::chrono::minutes(1);

		case unit::hours:
			return (end_time - start_time) / std::chrono::hours(1);

		default:
			return -1ll;
		}
	}
};

int main()
{
	measure_time check_time;	// 測定開始

	for (auto i = 0; i < 100; i++) std::cout << i << std::endl;	// target 1

	std::cout << check_time.lap_time(measure_time::unit::microseconds) << std::endl;	// lap 1

	for (auto i = 0; i < 1000; i++) std::cout << i << std::endl;	// target 2

	std::cout << check_time.lap_time(measure_time::unit::milliseconds) << std::endl;	// lap 2

	for (auto i = 0; i < 10000; i++) std::cout << i << std::endl;	// target 3

	std::cout << check_time.lap_time(measure_time::unit::seconds) << std::endl;	// lap 3

	return 0;
}


コンストラクタ呼び出し時点をstart、lap_time呼び出し時点をendとして計算し返却する。
lap_timeの引数としてスタティック定数を渡してやることで単位の変更が可能。

Xcode エラー [[APP NAME] is only available in iOS 13.0 or newer 'UIScene' is only available in iOS 13.0 or newer]

使用環境: 

Xcode: Version 11.3.1 

iPhone実機: iOS 13.3.1 (失敗)

                     iOS 12.4.1 (成功)

エラー内容: [[APP NAME] is only available in iOS 13.0 or newer 'UIScene' is only available in iOS 13.0 or newer]

 

iPhone実機のビルドが恐ろしく通らず数日かなり悩んでいたが、単純に今使用しているXcodeiOS 13.3.1だとビルドできない説が濃厚らしい。

なんとか実機で動いているのを見たい勢として、それならばと少し前まで使用していたiPhone7を引っ張り出してtargetを12.4へ変更後実機ビルド、した結果タイトルにもあるエラーに遭遇した。

targetが13.2になっている事は知っていたのだが、なんでも'UIScene'はiOS 13.0以上でしか使えない機能らしい。

解決法としては、とにかくエラーが出るのでそれらをすべてFixし(Fixすると

@available(iOS 13.0, *)

と追加される)、

class AppDelegate: UIResponder, UIApplicationDelegate {

クラスに

    var window: UIWindow?

を追加したところ問題なくビルドできた。

とりあえずできた、が、iOS 13.3.1でビルドができるようになればそっちで動かしたいのでこれをしたことによって動かなくなる、とかは本当に勘弁して欲しいと願っている。

なんかXcodeからコピペするとめちゃくちゃカッコいい感じになった。ウケる(ウケない)。

 

"TOEIC L&R TEST 出る単特急 金の熟語"を買った

3月のTOEIC受験はコロナウイルスの影響を受け無くなってしまったが、"出る単特急 金の熟語"を買った。

TEX加藤さんが著者である"金の"シリーズは全て購入しており、TOEIC用の単語帳が欲しいならとりあえずこの人のを購入すればいいと考えるほど信頼している。

"金の"シリーズは他に金のフレーズ、金のセンテンスとあり、金のセンテンスを特に愛用している。理由としては金のフレーズは単語で覚えるタイプ、金のセンテンスは文章で覚えるタイプに分かれており、僕は文章の方が単語を理解しやすいため。収録語彙は結構被っているように思える(同じだったかもしれない)。

熟語に手を出した理由は文章の読解をしている時に、結構熟語で止まってしまうことを以前より実感していたため。

前置詞のイメージを掴めていれば大丈夫、という人もいるがとりあえず目を通したくなった。

内容を見た感じかなり良さげで空き時間にでも眺めようと考えている。ただ、なんとなくだが金の背景にオレンジのラベルは違和を感じるのは僕だけだろうか。

次のTOEIC受験はかなり時間が空く気がするため、かなりのスコアアップを目標に考えている。できれば800くらいあるとありがたい。

 

 

Xcode Objectsの表示ずれ

使用環境: Xcode Version 11.3.1

 

iOSのTabbed Appテンプレートを使用し、新規View ControllerにLabel等を配置、ビルドしたところ、表示がずれ込みまくった(おそらく(0, 0)に配置された?)。

よく観察したところ、他のSceneよりConstraintsの内容が少なかったため、

[Add New Alignment Constraints]から[Horizontally in Container]と[Vertically in Container]を追加したところ解決した。

 

こういうすぐ解決する問題は周りに聞ける人がいない場合無駄に時間を食ってしまうからよくない。