【Swift4】【Codable】 CodingKeys書くのだるいよね
とゆーわけで作りました。SwiftLint対応。
SOURCE_DIR="$PROJECT_DIR/Hoge/Models" DEST_DIR="$PROJECT_DIR/Hoge/ModelExtensions" find $DEST_DIR -name "*Ex.swift" -type f | while read FILE do rm -f ${FILE} done find $SOURCE_DIR -name "*.swift" -type f | while read FILE do NAME=$(basename ${FILE} | sed "s/.swift//g") DEST_FILE=$DEST_DIR"/"$NAME"Ex.swift" touch $DEST_FILE echo "extension $NAME {" >> "$DEST_FILE" echo " enum CodingKeys: String, CodingKey {" >> "$DEST_FILE" while read line; do if ! echo $line | grep -q //; then if echo $line | grep -q let; then NAME=$(echo $line | sed -e "s/:.*$//g" -e "s/^.*let //g") SNAKED=$(echo $NAME | gsed -r -e 's/^([A-Z])/\L\1\E/' -e 's/([A-Z])/_\L\1\E/g') if [ $NAME = $SNAKED ]; then echo " case $NAME" >> "$DEST_FILE" else echo " case $NAME = "'"'"$SNAKED"'"' >> "$DEST_FILE" fi fi fi done < ${FILE} echo " }" >> "$DEST_FILE" echo "}" >> "$DEST_FILE" done
おひさしぶり
今に始まったことじゃないけど、ここ最近のフリーランスageについて思うこと
わたくし
.NET系はだいたい何でもできて
iOSはObjective-cもSwiftもできて。なんならARCなしで書いてたし
AndroidはJavaもKotlinもできて。なんなら2.3くらいから書いてたし
WebはC#もPHPもRubyもできて、フロントエンドも人並みにはできて
DBはSQLServer、MySQL、postgreSQLできて
AWSもできて
Unityもできて
toCもtoBも業務システムもカジュアルゲームもソシャゲも3Dゲームも作れて
大手メーカーのもの作ってたから全世界に出荷されてるし
某キャリアのスマホユーザーはだいたい俺が作ったの使ったことあるはずだし
上場企業に新卒で入って
10億規模の有名ゲームのチーフエンジニアやってたし
フリーランスもやってたし
ベンチャーのCTO兼Co-Founderやってたし
有名ベンチャーの開発責任者もやってたし
有名ベンチャーのアドバイザーもやってるし
いまだにちょこちょこCTOの話とかはもらうし
経営実務は完璧にこなせるし
たぶん総務部長とかできるくらいには総務詳しいし
労働基準法とか法令関連もめっちゃ勉強したし
何年間も年数千万以上は契約取れ続けるくらいには営業できるし
もうすぐ三期目終えられそうなくらいにはちゃんと会社続けられてるけど
採用とマネジメントだけは苦手だけど
それでも
やはりIoTかVRか仮想通貨かAIかVUIかに手を出さなきゃかなとか
React Nativeやろうかとか
Unreal Engineやろうかとか
PhysonとGoとRやらなきゃとか
スモールビジネスじゃなくてスタートアップの経営もやっといたほうがいいかなとか
資金調達ってしたことないからしてみたほうがいいかなとか
日本だけでやってたらやばいんじゃないかとか
ものすごいめっちゃ不安ですよ。まじで。
会社員に戻っても絶対年収1000万は切らない自信はあるけど、いつ仕事がなくなるか怖くて不安でたまらんのが経営。
会社員よりマシとかいってフリーランスになる人見るとある意味尊敬する。
有給はあるし、福利厚生はあるし、残業代は出るし、会社から金もらって勉強できるし、まじで最高の身分だと思いますよ。はい。
ちなみに経営者側から見ると元フリーランスとか元経営者はあまり採用したくない。
これは人によるかもだけど。ぼくでも相手によるけど。
【iOS,Swift3】Extension晒す〜番外編〜Propertiesの巻
表題の通りです。ご査収ください。
import Foundation public protocol Properties { func properties() -> [String: Any?] } extension Properties { public func properties() -> [String: Any?] { var dic = [String: Any?]() Mirror(reflecting: self).superclassMirror?.children.forEach { (child) in if let key = child.label { dic[key] = child.value } } Mirror(reflecting: self).children.forEach { (child) in if let key = child.label { dic[key] = child.value } } return dic } }
補足。こんな感じで使います。
internal class Hoge: Properties { internal var printProperties { properties().forEach { (key, value) in print("PropertyName: \(key) \nValue:\(String(describing: value))") } } }
【iOS,Swift3】Extension晒す〜Date編〜
表題の通りです。ご査収ください。
import Foundation extension Date { // MARK: - public property /// 週あたりの日数 public var daysPerWeek: Int { get { return 7 } } /// 月の初めの日 public var firstDateOfMonth: Date { get { let calendar = NSCalendar.current var components = calendar.dateComponents([.year, .month, .day], from: self) components.day = 1; return calendar.date(from: components)! } } /// 月の週数 public var numberOfWeeksForMonth: Int { get { let rangeOfWeeks = NSCalendar.current.range(of: Calendar.Component.weekOfMonth, in: Calendar.Component.month, for: firstDateOfMonth) return (rangeOfWeeks?.count)! } } /// 月の日数 public var numberOfDaysForMonth: Int { get { let rangeOfDays = NSCalendar.current.range(of: Calendar.Component.day, in: Calendar.Component.month, for: firstDateOfMonth) return (rangeOfDays?.count)! } } // MARK: - public method /// toString() /// /// - Parameter format: フォーマット /// - Parameter calendarIdntifier: カレンダーIdentifier /// - Returns: 文字列 public func toString(format: String, calendarIdentifier: Calendar.Identifier = .gregorian) -> String { let formatter = DateFormatter() formatter.calendar = Calendar(identifier: calendarIdentifier) formatter.dateFormat = format return formatter.string(from: self) } /// fromString() /// /// - Parameters: /// - string: 文字列 /// - format: フォーマット /// - Parameter calendarIdntifier: カレンダーIdentifier /// - Returns: Date public static func fromString(_ string: String, format: String, calendarIdentifier: Calendar.Identifier = .gregorian) -> Date? { let formatter = DateFormatter() formatter.calendar = Calendar(identifier: calendarIdentifier) formatter.dateFormat = format return formatter.date(from: string) } }
【iOS,Swift3】Extension晒す〜Array編〜
Androidエンジニアと見せかけて、
iOSエンジニア風を装って、
Unityエンジニアのふりして、
インフラエンジニアもちょっと名乗って、
当たり前のようにWebエンジニアとして仕事もするけど、
本業は未だに.NETエンジニアと思いたいけどたぶんもう無理で、
実際の身分はCEOとプレCTOとアプリ開発責任者の伊豆丸さんです。
表題の通りです。ご査収ください。
import Foundation extension Array where Element: Hashable, Element: Equatable { public func diff(_ other: [Element]) -> [Element] { let all = self + other var counter: [Element: Int] = [:] all.forEach { counter[$0] = (counter[$0] ?? 0) + 1 } return all.filter { (counter[$0] ?? 0) == 1 } } public func subtracting(_ other: [Element]) -> [Element] { return self.flatMap { element in if (other.filter { $0 == element }).count == 0 { return element } else { return nil } } } public mutating func subtract(_ other: [Element]) { self = subtracting(other) } }
【iOS】URLからUIImageViewに画像表示 Swift3版
タイトルまんま
まともにちゃんと書いてあるのがなかったので
extension UIImageView { public func setImage(fromUrl url: String) { URLSession.shared.dataTask(with: URLRequest(url: URL(string: url)!)) { (data, response, error) in guard let data = data, let _ = response, error == nil else { return } DispatchQueue.main.async(execute: { self.image = UIImage(data: data) }) }.resume() } }
春
花の香りがそよ風に運ばれてくる候となりました。
皆様、いかがお過ごしでしょうか。
って言いたかっただけ。
ネタがない。
うーん。
今まで書いた技術ネタもちょっと古くなってきたからか、ちょっとアクセス少ないし。
うーん。
書きたいことは山ほどあるんですが!書けるネタが!ない!
うーん。
春爛漫のこの頃、健やかなる日々をお過ごしください。