タグ

ブックマーク / qiita.com/dankogai (36)

  • swift - 4.2 では Linux でも Foundation が使える

    Swift が正式に 4.2 になりました。 https://swift.org/blog/swift-4-2-released/ 色々いいことがあるのですが、個人的に一番嬉しいのは、 Linux でも macOS 同様に Foundation が使えること。これで macOS とのコード共有率が格段に上がります。 なのですが、公式Downloadページの取説のママだと Welcome to Swift version 4.2 (swift-4.2-RELEASE). Type :help for assistance. 1> import Foundation error: Couldn't lookup symbols: _swift_FORCE_LOAD_$_swiftGlibc $ cd ~ # home directory で作業 $ sudo apt-get install c

    swift - 4.2 では Linux でも Foundation が使える
  • Swift - プロトコルが型になるとき - Qiita

    @koher さんの記事、なぜSwiftのプロトコルはジェネリクスをサポートしないのかにおける議論は改めて記事にするだけの価値があるのでそうすることにします。 君の型は? まずは以下のコードをご覧ください。 import Foundation protocol Animal { var binomen:String { get } init() } struct Cat: Animal { let binomen = "Felis silvestris catus" let theYoung = "kitten" } struct Dog: Animal { let binomen = "Canis lupus familiaris" let theYoung = "puppy" } var pet:Animal = (arc4random() & 1 == 1) ? Cat() : Do

    Swift - プロトコルが型になるとき - Qiita
    Nyoho
    Nyoho 2018/07/17
    あーそういうことね。完全に理解した。
  • SION update - now available in Rust - Qiita

    というわけでSIONですが、ぶち上げて1週間も経たないうちに言語実装が4つになりました🎉。 前回から増えたのはRust。pandaman64さんありがとうございます🙇‍♂️。 https://github.com/pandaman64/sion-rs ソースコード、綺麗ですねえ。目的ごとにファイル分割しているので読みやすいし。swift-sionもそうしたかったところなのですが、Swift Playgroundsのことを考慮すると単一ファイルに納めておきたいんですよね… そのswift-sionにもついにMessagePackとの相互変換機能が搭載されました。おかげで行数が1000行を超えましたが、1024行は超えてないので許してください。 Swift Package Managerがあるのだし、機能追加するためのモジュールを別途書くことも考えたのですが、MessagePackとの相互

    SION update - now available in Rust - Qiita
    Nyoho
    Nyoho 2018/07/15
    動きが早い
  • SION - is now Interchangeable - Qiita

    SIONは Swift Interchangeable Object Notation から取ったと紹介記事で書きましたが、実装が単一言語ではinterchangeableとはとても言えません。というわけでJSの実装を書いたのですが、なんとGoの実装をそれより先にmattnが文字通り一晩で書いてくれちゃいましたよ。 というわけで誕生二日目で早くもinterchangeableになったSIONですが、 フォーマットの公式ページを実装ページから分離しました。 https://dankogai.github.io/SION/ URLダサいので何かとりますかね… 前述通り、GoとECMAScriptの実装が加わりました。 https://github.com/mattn/go-sion https://github.com/dankogai/js-sion どちらもドキュ貧なのですが、ここでは私が

    SION - is now Interchangeable - Qiita
    Nyoho
    Nyoho 2018/07/12
  • SION, a data serialization format a little more expressive than JSON - Qiita

    SIONというシリアライゼーションフォーマットを提案します。Swiftによるレファランス実装はこちら。 https://github.com/dankogai/swift-sion SIONという名前は Swift Interchangeable Object Notation からとりました。名前の通りSwiftのリテラルが元になっています。以下はSIONで表現されたデータの一例です。 [ "array" : [ nil, true, 1, // Int in decimal 1.0, // Double in decimal "one", [1], ["one" : 1.0] ], "bool" : true, "data" : .Data("R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"), "date" : .Da

    SION, a data serialization format a little more expressive than JSON - Qiita
    Nyoho
    Nyoho 2018/07/10
    なにこれすごく便利そう。使ってみよう。
  • APFSで再燃したNFD問題 - Qiita

    iOS 10.3 でAPFSが番投入されました。それでiPhoneiPadが文鎮化するなどの深刻な問題はみられなかったものの、やはり無問題とはいかなかったようで。 iOS10.3で不具合の出るアプリは、APFS関連の影響かも(Unicode Normalizationの振る舞いが変わったらしい)。GoodReaderとDropboxの同期でエラーが出るようになったのだが、ファイル名に濁点を含むファイルを除いたら同期できるように。 — 山路達也 (@Tats_y) March 29, 2017 原因を調べてみました。 #!/usr/bin/env perl use strict; use warnings; use feature ':all'; use Encode; use Unicode::Normalize; use utf8; binmode STDOUT, ':utf8';

    APFSで再燃したNFD問題 - Qiita
  • zfs - MacBook Air (13-inch, Late 2010) をオクタブート化 - Qiita

    勇者がいないなら、自分が勇者になればいいのに。 前回記事 勇者はぜひ上記に macOS と illumos も加えたクアッドブートディスクをこさえてみてください。 というわけでやりました。 illumos は後述の理由でないけどクワッドどころかオクタブートです。それもベアメタルで。 MacBook Air (13-inch, Late 2010)。6年以上前のノートブックの未来、かつて私のメインノートで、その後長女のメインノート。だから裏蓋はこんな。 その長女のメインノートも、私と同じ MacBook Pro (Retina, 13-inch, Mid 2014) に変わって以来、しばらくお蔵入りしていたのを引っ張り出して来ました。 USB3はおろか、Thunderboltもない、CPUパワーは今日日のiPhoneに負けてしまうロートルですが、 Sierra も Windows 10 も動

    zfs - MacBook Air (13-inch, Late 2010) をオクタブート化 - Qiita
    Nyoho
    Nyoho 2017/02/25
  • zfs - 単一パーティションでマルチブート - Qiita

    なんぞこれ? 事実上パーティションが一つしかないのに、UbuntuだけではなくFreeBSDもブートできます。Debian kFreeBSDとかではなく正真正銘The FreeBSD Project謹製のFreeBSD 11-RELEASEです。 FreeBSDの方は起動時はCLIのみですが、 Username: freebsd Password: zfs でログイン後にstartxするとgnome3が立ち上がります。 ubuntuの方は前回の投稿と同様です。というかそれが材料になってます。 作り方 すでにubuntuがインストール済みのVMを用意 FreeBSD-11-RELEASEのインストールディスクイメージをCDに指定してそこから起動 shellに入る FreeBSD用のデータセットを追加。こんな感じで。 # zpool import -f -N -R /mnt rpool # z

    zfs - 単一パーティションでマルチブート - Qiita
    Nyoho
    Nyoho 2017/02/15
    マルチブートなのに/homeは全く同じ(共有ではない)とか最高じゃん
  • zfs - 持ってけ ubuntu 16.04 仮想マシン - Qiita

    OneDrive改め埃かぶってたVPSに置いときます。ご自由にお召し上がり下さい。 なにこれ? 何の Ubuntu 16.04 Desktop の仮想マシンです。100% ZFSな点を除いて。 FreeBSDでは10.0-RELEASE以降インストーラーもZFS対応済みなので Pure ZFS なシステムを作るのも実にちょろいのですが、Linuxはまだそこまで行ってません。Ubuntu 16.04 Root on ZFSというドキュメントは上がってますが、これを見た人は「なんて面倒なんだ!」とまたぎするのではないでしょうか。Ubiquityの超絶安楽インストーラーに慣れた人ならなおのこと。 しかし一旦こしらえてしまえば、あとはいつもと変わりません。デフォルトのext4で構築されたシステムと全く同じように apt できますし、同じように 16.10 にも dist-upgrade できまし

    zfs - 持ってけ ubuntu 16.04 仮想マシン - Qiita
    Nyoho
    Nyoho 2017/02/11
    こりゃいいな。仮想マシンを実験してすぐぶっ壊してぶりぶりっと作り直すのは簡単にできるようになったけどZFSでサクッと「工場出荷時」に戻してザクザク遊べる
  • ZFS - スナップショットいつやるか?今でしょ! - Qiita

    こういうニュースを見るたびに、こう嘆かざるを得ません。 GitLab.comが操作ミスで番データベース喪失 「ああ、ZFS使ってれば」、と。 ZFSはこれまでのファイルシステムの常識を覆す画期的なファイルシステムでした。fsckを不要にするトランザクション,パーティションという概念を過去のものにするデータセット,ファイルシステム自体のundoを可能にするスナップショット,エラーを自動検知し,可能であれば自動修復するチェックサム,RAIDホールがないRAID-Z……「Z=最後のファイルシステム」という自信がその名に込められたZFSは,今は亡きSun Microsystemsの最後の遺産でもあります 僕にZFSの話をさせると長くなります -- ので、今回はスナップショットを中心に手短に。 バックアップを難しくしているのは何か? ここで、ある小さな*nixシステムのフルバックアップを取ることに

    ZFS - スナップショットいつやるか?今でしょ! - Qiita
    Nyoho
    Nyoho 2017/02/04
    btrfsもスナップショットあるけどZFSとどっちがどう良いとかいう比較が知りたいです。/ APFSの下り完全に同意
  • Math - つがいは一緒に面倒見るのが吉な件 - Qiita

    というわけで続きです。 Math - 円周率を3.14どころか3.141592653589793としても丸く収まらなかった件 それではなぜPONSの三角関数がwrapAngleを利用するようになったのか。続きは次の記事で。 演算におけるつがい つがいになると、大事なことは一人ではなく相方と一緒にやることになります。映画鑑賞から子育てまで。「リア充爆発しろ」?つがいから見たら、よく「一人でやってて爆発しませんね」といったところかもしれません。 なぜつがいがつがいか。一人でやるよか楽(だ|しい)からに決まってるじゃないですか。 実は演算においても、そうしたつがいは少なくないのです。一番有名なのは除算における商(quotient)と余り(remainder)ですか。これはどちらかを計算しようとすると必ずもう片方も出てきます。 実はCにもdivという関数があって、これを使うとつがいのまま得られます

    Math - つがいは一緒に面倒見るのが吉な件 - Qiita
    Nyoho
    Nyoho 2016/02/27
  • swift - PONSとAccelerateをマリアージュしたら通常の3倍の倍速くなった件 - Qiita

    PONSにUInt128を加えてみました。 任意精度をサポートしているのに、なぜ? そこにAccelerateがあったから。 Accelerateは来ヴェクター演算に用いられるライブラリ。とは言っても裸に近いライブラリで、生ですと腹が壊れかねないので(下記コードで生っぷりの片鱗を見ることができます)、SwiftでもSurgeとか有名なラッパーが出てます。 このAccelerate、実は小さな数をまとめて処理するだけではなく、大きな数を処理する機能も入ってたりします。ただし現時点で OS X のみ。 ならば… OS X では Accelerate を使って それ以外では BigInt に計算代行してもらえば 安価に(128|256|512)bit固定長整数が手に入るんじゃね? と先ほど思い立ってやってみたら実に安上がりに出来ました。とりあえずUInt128から。 public struc

    swift - PONSとAccelerateをマリアージュしたら通常の3倍の倍速くなった件 - Qiita
    Nyoho
    Nyoho 2016/02/25
    ブラボー! iOSなどでも是非!
  • Swift - Introducing PONS = Protocol Oriented Number System - Qiita

    まだ荒削りですが、お披露目してもいいところまで来たので。 https://github.com/dankogai/swift-pons 売り口上 これでSwiftでも GMPとか外部ライブラリなしで任意精度整数(BigInt)や任意精度分数(BigRat)や任意精度浮動小数点数(BigFloat)が使えるようになります。 外部依存がないので、Xcodeでなくてもswiftcがあれば使えます。もちろんOS XだけでなくてLinuxもサポート その任意精度数も、四則演算以外の演算を最初からサポートしています。整数は素数判定できますし、任意精度実数は<math.h>の関数を使えます。 これだけでもかなりハッピーになれます。 でも当のウリは、そこじゃないんですよ… 承前: 古き良きCの時代 例えばman powとしてみます。こんな答えが返ってくるでしょう。 SYNOPSIS #include <

    Swift - Introducing PONS = Protocol Oriented Number System - Qiita
    Nyoho
    Nyoho 2016/02/19
    たばいちょうもできる
  • SwiftでFunctionalといえどデータは使い捨てない方がいい理由 - Qiita

    extension SequenceType { typealias E = Generator.Element func groupBy<K: Hashable>(key: E -> K) -> [[E]] { return self.reduce([:]) { (var r: [K: [E]], x) in let k = key(x) r[k] = (r[k] ?? []) + [x] return r }.map { _, v in v } } } sampleArray.groupBy { "\($0.y)-\($0.m)" } var を parameter で使う以上の問題があります。 それは、配列を使い捨てていること。(r[k] ?? []) + [x]するたびに、古いr[k]に入っていたArrayが捨てられています。 「これってパフォーマンスに響くよねえ」と脊髄反射でベン

    SwiftでFunctionalといえどデータは使い捨てない方がいい理由 - Qiita
  • Swift 2のProtocol-Oriented Programmingっぽい書き方を理解する - Qiita

    func isEven(number: Int) -> Bool { return number % 2 == 0 } let evens = Array(1...10).filter(isEven) print(evens) // [0, 2, 4, 6, 8, 10] 何が古いかというと、いちいち1...10をArrayにしているところ。もうしなくていいんです。そう、Swift 2ならね。 実際、Swift 2では.mapはもうArrayでは定義されてないんです。公式ドキュメントのArray Structure Referenceを見ても、.mapはどこにも見当たりません。 ではどこで定義されているか? Arrayが準拠しているprotocol CollectionType です。実際にCollectionType Protocol Referenceを見てみると、.mapや.filt

    Swift 2のProtocol-Oriented Programmingっぽい書き方を理解する - Qiita
    Nyoho
    Nyoho 2016/01/28
    danさん、それステマじゃない!ww
  • swiftのREPLで俺モジュールをimportする方法 - Qiita

    SwiftのREPL、最高。 何が最高かって、あの重いコンダラじゃなくてXcodeを立ち上げなくても使えるところ。Xcode不要なので、Linuxでも動くし。 しかし、perlのuseとかrubyのrequireとかpythonのimport相当のことを、自分の書いたコードに対してやろうとすると一苦労。でも、一旦やり方を掴んでしまえばちょろいもんです。 swift-complexを例に説明します。 「説明は抜きにして、とにかく俺モジュールimportしたいという人は、以下のMakefileを雛形にしてください。 MOD=Complex BIN=main MODSRC=complex/complex.swift complex/exops.swift BINSRC=$(MODSRC) complex/main.swift complex/tap.swift MODULE=$(MOD).swi

    swiftのREPLで俺モジュールをimportする方法 - Qiita
    Nyoho
    Nyoho 2016/01/25
  • swiftでもテストはTAPで - Qiita

    Swift が opensource 化されてもう一月以上。みなさんテストはどうされてますか? もちろんこの場合XCTestなんてチャラいものは使えません。Linux版にSwift自体はあってもXcodeなんてありませんから。 というわけで、私はずっとTest Anything Protocolを使ってきました。 発祥はPerl Communityですが、別にPerlでなくても使えます。例えばJSの世界ではよく使われているmochaも対応してますし、TAP適合の出力であれば、それをチェックするためのスクリプトproveは、Perlが入っている環境であれば必ず入っているのでOS XとLinux Distroの過半では out-of-box で使えます。 見てのとおりシンプルなものなので、その場で都度実装してもいいですし実際そうしてきたのですが、ずいぶんとSwiftプロジェクトも増えたので、

    swiftでもテストはTAPで - Qiita
  • "%.17g" = doubleの出力をポータブルにする魔法の呪文? - Qiita

    遅まきながら、明けましておめでとうございます。 諸般の事情で浮動小数点と取っ組み合っています。 懸命な読者であれば、浮動小数点表記は"eyes only"なものであり、データの交換に用いるのは慎むべきであることはご存知かと思われますが、実はそうも言ってられなくなっていることに気づいた人はどれくらいいらっしゃるのでしょうか… そう。JSONです。そのままJavaScriptでevalできちゃう、RFC7159で規定された、今や世界で最も利用されているであろうデータ交換フォーマット。 JavaScriptでevalできちゃうだけあって、数値はJavaScriptの数値リテラルそのものです。 Hexadecimal Floating Pointなんてお洒落なものは使えません(Hex Floatについては記事を改めて)。 つまり、Cにおけるdouble、JavaScriptにおけるNumberを、

    "%.17g" = doubleの出力をポータブルにする魔法の呪文? - Qiita
    Nyoho
    Nyoho 2016/01/07
  • Swift on Linux: Getting Started ASAP - Qiita

    キター! Swift is Open Source - Swift Blog - Apple Developer 理念的にはオープンソースであることが最重要ですが、実地ではApple製品以外の環境も正式サポートされたことが大きいでしょう。これでやっと真の意味での汎用言語となったわけです。 というわけで、早速使ってみましょう。 下準備 Ubuntu 14.04 LTS or Ubuntu 15.10 (64bit) もちろんVMでも構いません。メモリー2GB、仮想ディスク16GBもあれば余裕です。ソースから debugugging symbol までサポートしたフルビルドをしたい場合は、打って変わってメモリー16GBでも足りず、さらに16GBほどswapを足してやっと事なきを得ましたが、バイナリーをダウンロードして使うのであれば最低限で事足ります。 clangのアップデート(14.04 LT

    Swift on Linux: Getting Started ASAP - Qiita
    Nyoho
    Nyoho 2015/12/04
    デバッギング・シンボルをサポートするとすごくメモリがいるんだなあ
  • Swift - 再帰的enumの書き方 - Qiita

    その日は来ないと弾言しちゃいます。 [Swiftで気になった所] 代数的データ構造を彷彿とさせる魔改造を施されたenumですが、再帰的データ構造が出来そうで出来ないのでガッカリ感が有ります。 enum List { // (!) Recursive value type 'List' is not allowed case Car(AnyObject) case Cdr(List?) } 正座して実装される日を待ちます。 [Swiftで気になった所]: http://qiita.com/ykst/items/3aba08ba1bf8955004d1 なぜなら、それが出来るようにするということはSwiftの型システムのありようを根から崩壊させてしまうことになるからです。 結論を述べる前に、上記のコードをあえてCで書いたらどうなるのか見てみましょう。

    Swift - 再帰的enumの書き方 - Qiita
    Nyoho
    Nyoho 2015/01/26