【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() } }
春
花の香りがそよ風に運ばれてくる候となりました。
皆様、いかがお過ごしでしょうか。
って言いたかっただけ。
ネタがない。
うーん。
今まで書いた技術ネタもちょっと古くなってきたからか、ちょっとアクセス少ないし。
うーん。
書きたいことは山ほどあるんですが!書けるネタが!ない!
うーん。
春爛漫のこの頃、健やかなる日々をお過ごしください。
【iOS】CocoaPodsをアップデートしたあとにやること
タイトルの通りー
ちょっとハマったので。
とりあえず、
sudo gem clean cocoapods
sudo gem update cocoapods
sudo gem update
んで、
sudo rm -rf ~/Library/Caches/CocoaPods/
sudo rm -rf ~/.cocoapods/repos/master/
pod setup
プロジェクト側で、
rm -rf Pods/
pod update
pod setupはちょっと時間掛かるけどねー
いじょー
三十路
なりました。
20代を振り返る&30代の目標
■振り返り
・20〜22歳
身分は大学生でした。
大学にはほとんど行かず水商売してました。
普通のバイトもしてたけど。
なぜ卒業できたのかは今でもわかりませんが、卒業させてもらえてよかったです。
飲むのは朝7時頃から昼くらいまで。
・22歳〜25歳
上場企業にお勤めでした。
予定がなければ平日5時間、休日はほぼ一日中勉強してました。
とにかく個人的に勉強がしたかったので、本当に入社してよかったです。
飲むのは夕方18時頃から終電なくすまで。
・26歳
SAPにお勤めでした。
エンジニアとしての最盛期でした。
入社してからチーフエンジニアになるまでが人生で唯一仕事が楽しい時期でした。
とにかくどブラックでがむしゃらに働きたかったので、本当に入社してよかったです。
飲むのは終電がとっくのとうになくなってから晩御飯がてら。
べろべろになっても仕事できるようになったのがこの頃。
携帯とPCを肌身離さず持ち歩くようになったのもこの頃。
・27歳
フリーランス+CTOでした。
時々ニートでした。
引きこもりがちでした。
・28歳
CEOでした。
時々ニートでした。
お付き合いの飲みが多かったです。
・29歳
CEO+開発責任者でした。
前半は派手に遊び回ってました。
後半はうにゃうにゃしてました。
20代後半のやる気のなさw
■30代の目標
・akippaさん
がんばります。
自分がこんなにバリュー出してない仕事とか会社は初めてです。
ごめんなさい。
さっさとバリュー出しますw
・Arrvisさん
当面は本体の安定運営。組織作り。
あんまり従業員かまってないので、ちゃんとかまうw
ホールディングス化。
ホールディングス化は設立当初からずっと言ってるねん。実は。
とりあえず今年1社は子会社設立して、その他に1社くらいは買収したいな。
30代終わるまでには子会社10社目標。
・スタートアップ
作る。2年でバイアウト目標。
Arrvisさんとは無関係のところで。
オーナー社長とスタートアップ社長って全く別物なんすよね。
前者は経営者で、後者は起業家って言ったほうがいいよね。
誰にというのは別にないし、それぞれに優劣をつけるつもりはないけど、なんか経営者ぶってる起業家とか、起業家ぶってる経営者見るといらっとするからスタートアップ作る。
んで、勝つ。経営者としても起業家としても成功する。
・プライベート
色々片付けたい。
35歳までには資産作って、自社ビルおっ建てて、会社とか全部人に任せて、南の島で利益度外視のサービス作ったり、利益度外視の飲食店やったり、悠々自適に暮らしたい。
とゆー感じで夢はでっかくがんばりますので、皆様今後とも宜しくお願いします\(^o^)/