mike-neckのブログ

Java or Groovy or Swift or Golang

swift

ターミナルでクリップボードにある画像をファイルに保存するやつ作った

以前に作った imgcopy(ターミナルで画像のファイルをクリップボードにコピーするやつ) の逆バージョンを作った。 mike-neck.hatenadiary.com

ターミナルで画像ファイルをクリップボードにコピーするツール作った

表題にあるようなツールがないかと探してみたのですが、テキストをクリップボードにコピーするツール(pbcopy のラッパー)は見つかるものの、画像ファイルをコピーするツールが見当たらないので作ってみた。 github.com README.md に書いてありますが、コマン…

Swift の Result にあると良さそうな関数

Swift の Result をいじっていて、書いてしまった拡張関数 現在の値を消費して終わりの関数 extension Result { func doOn(success: (Success) -> Void, failure: (Failure) -> Void) { switch self { case .success(let value): success(value) case .failu…

Swift愛好会 vol39 に行ってきた

表題の通り、 Swift 愛好会 なる勉強会に行ってきました love-swift.connpass.com ついでなので、 swift-log について発表してきた swift-log について from Shinya Mochida www.slideshare.net 雑に紹介すると、 swift-log は apple が作っている slf4j み…

swift-nio-ssl に出したサンプルコードのPRがマージされました

すごい時間かかりましたが、Apple の swift-nio-ssl に出したサンプルコードのPRがマージされました。 github.com 時間かかったのは、僕がどうやら指摘されてた修正をすっかり忘れていたからっぽいです… 現場からは以上です。

Swift の Result 型メモ

わけあって、 swift-nio-ssl を急遽触っているが、その際に Swift5 の Result 型をさわったので、そのメモ。

Swift Package Manager 5.0 のDevelop バージョンを利用する

swift-nio-ssl に PR を出して早7ヶ月、もはや Swift を忘れた頃に、「ごめんごめん、完全に忘れてた。最新の状態にあわせてくれれば取り込むよ」と言われて、準備をしようとしたところ、 swift-nio-ssl が使っている Swift Package Manager のバージョンが …

Swift 用の正規表現ライブラリー

これは Qiita のアドベントカレンダー2018 の19日目のエントリーです。 qiita.com Swift の勉強を始めたのが今年の5月末からで、約半年程度 Swift をやってきました。ただ、僕は仕事では一切 Swift を書いていないので、知見に溢れた他の方のエントリーを楽…

Swift Package Manager プロジェクト にて CPP(C++) の関数を Swift から呼び出す

一つ前のエントリーの続き。 C++ で作られた関数を Swift から呼び出す方法。 巷には C++ の関数を Swift から呼び出す方法に関する記事が溢れているが、 XCode 前提で Swift Package Manager プロジェクトについて触れてない SPM 使っててもちょっと古い Br…

CPP(C++) の関数を C 言語から呼び出す方法

C 言語を業務でやったことがほとんどない + CPP は完全に触ったことがないので、いろいろググりつつやってみた。 最終的に Swift から C++ で定義されているオブジェクトの関数を呼び出すところまでが目標。 まず、次のような C++ の関数が定義されているも…

Amazon 製 Server-side Swift フレームワーク smoke-framework について

これは Qiita のアドベントカレンダー 2018 の初日のエントリーです。 特に Swift コミュニティに何の貢献もしていないのですが、空いてたのでついポチッと登録してしまいました。 qiita.com 2018 年の 10 月 4 日に Prime Video のエンジニアの Simon さん…

Azure 上の Ubuntu で Swift 4.2.1 を動かす

この3連休で試したのでメモ。 Azure で立てた Linux VM(Ubuntu16.04) にて、 swift の docker イメージにある通りの手順で Swift4.2.1 をインストールしたところ、エラーが出てしまって Swift アプリケーションを動かせなかった。 具体的には libdispatch-de…

Swift から regex.h を呼び出してみる

Swift の正規表現はどうなっているのか以前気になって調べたところ、 Foundation には正規表現がないため、 NSRegularExpression を使うとのことで、実際に試しに使ってみたところ、使い勝手がかなり悪くて使うのを諦めました。そこで、 C 言語に regex.h と…

Swift から C の関数を呼び出す(Swift Package Manager 使ってる)

Swift から C の関数を呼び出す方法を Swift-NIO のコードを読みながら試した。

Swift で byte の配列を標準出力に書き出す

わからんから調べた

Swift-NIO で http クライアントの書き方

Swift-NIO で http クライアントの書き方。 以前失敗してたけど、リベンジしたのでその記録。

DispatchQueue の多重度

DispatchQueue の多重度を調べてみたところ、64個であることがわかった。 【2018/08/31 0:00 訂正】以前50と書いていたが、数え間違えていた…(´・ω・`)

libcurl の curl_multi_socket_action のメモ

Swift の URLSession の中で呼び出されている curl_multi_socket_action の動作を調べていたので、そのメモ。

Swift で Foundation を import するとヘッダーまわりでエラーが発生する場合の対処

以前書いたエントリー mike-neck.hatenadiary.com の対処法が間違えていて、ビルドもなにもできなくなった上に、 REPL で import Foundation をやっても同じエラーが出てしまう割と深刻な状況の対処法。 (巷にある ~/Library/Developer/Xcode を消すやつが何…

Swift Package Manager が Objectiv-C module 'Darwin' をビルドできなかったときの対策

Swift Package Manager が不調(?)で、 swift package generate-xcodeproj すると、コケる 【2018/08/05 22:27 追記】この方法は正しくない。正しい対処の仕方は不明。 $ swift --version Apple Swift version 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2) T…

Swift-NIO で HTTP Client を書いてみる

この前の土日に Swift-NIO を使って HTTP Client を書いてみたが、うまく動かなかった。 Bootstrap 基本的には Netty と同じ。 ClientBootstrap のイニシャライザーを呼び出して、 EventLoopGroup と ChannelOption と ChannelInitializer(Channel -> EventL…

URLSession による HTTP 接続と libcurl

swift で HTTP でAPIを呼び出すときなどは URLSession#dataTask(with:,completionHandler:) を使うのが一般的らしい。 guard let url = URL(string: "http://localhost:8080/api") else { throw MyURLError.invalidURL } URLSession.shared.dataTask(with: u…

Swift で JSON のデコード

Swift4 での JSON 文字列からオブジェクトへの変換方法のメモ. もっと詳しく調べたい場合は公式のドキュメントを調べた方がよい. これからデコードするJSON { "id": 219038 , "name": "James Thunder" , "password": "s0r23ndsn0q3mf083259" , "created_at":…

Swift-NIO の ChannelInboundHandler/ChannelOutboundHandler のメモ

単なるメモ Swift-NIO の ChannelInboundHandler/ChannelOutboundHandler を記述する際のポイント ChannelInboundHandler Netty の ChannelInboundHandler と同じく、基本的には channelRead(ctx:ChannelHandlerContext, data: NIOAny) を実装する NIOAny 型…

Swift Package Manager のメモ

とある理由により、 Swift Package Manager を使っているけど、どこに書いてある方法を真似しても(Swift のドキュメントですら)エラーが出てしまうので、自分用にメモを取ることにした プロジェクトの作成 プロジェクトを作成するには swift package init コ…

AppCodeでSwift書いてみたメモ

こんにちわ、みけです。 とりあえず、日曜プログラマーとして、 AppCodeでSwiftのコードを書いてみることにしました。 その時の感想というか、メモというか、なんというか… MAC OS X10.9上で動くコンソールアプリケーション Swiftほとんど触ったことがないの…