今年に入って Octopassというプロダクトを公開しました。それは、Linuxのユーザや権限をGithubのTeamと連携して運用を楽にするというツールでした。色んな方々のご協力により、多くのRetweetやはてぶいただいたことで、ある程度、Octopass を必要としそうな人の目に触れたのではないかと思っています。(Githubのスター数が少ないのは今後の課題)その中で「すごく便利」「ぜひ導入したい」というフィードバックは、継続して機能追加していくというモチベーションにつながっていて、非常にありがたいです。 さて、この Octopass は、Linuxユーザ名前解決をするためにの glibc の libnssモジュールをCで実装しています。cgoやその他の言語でShared Objectを吐き出しても良かったのですが、それだと技術的挑戦が足りないとして、触れてこなかったCに挑戦しました
概要 題名通りです。Windows 10(64bit)にClangをBash on Ubuntu on Windows(以下BUW)で入れました。 以下はそのメモ書きです。 警告:ただClangを使いたいだけの人はapt-getすればClang3.8まで入ります。以下の記述は自力ビルド用です BUWを導入 これには次の記事を参照しました。 Bash on Ubuntu on Windowsをインストールしてみよう! Windows 10がビルド1607・OSビルド14393.693だったせいか、「ホスト名の明記」の項目で見事に詰まりました ただし「sudo: unable to resolve host」といった英字表記ではなく日本語表記でしたが…… これの解決には「sudo: unable to resolve host が表示されたら」を参照しました エラーメッセージが出ていてもコマン
To some degree, C was written for the purpose of elevating UNIX from a machine-level operating system to something resembling a universal platform for a wide range of software applications. Since its inception in 1972, C has been the common language of UNIX, which essentially means that it’s everywhere. Example 1-1. C program to blink an LED on an 8-bit microcontroller with a 2,000-millisecond del
Photo by Alan Becker Capuyá 青木です。 先日、paizaのツイッターアカウント(@paiza_official)で出題した四択問題について、皆様からたくさんのご指摘・ご批判をいただいたので、その経緯と結論をお伝えします。 次のような問題を考えて出題しました。 int i = 0; のときに評価値が1になるのは— paiza[パイザ] (@paiza_official) 2016年12月26日 【補足】C言語,C++,Javaを想定しています— paiza[パイザ] (@paiza_official) 2016年12月26日 当初は、それぞれの評価値は順に2, 3, 1, 2となり、3つめの"i++ + i++"の選択肢が答えとなることを想定していました。 ですが、しばらくすると、次のようなリプライやツイートをいただきました。 全部C(たぶんC++/Javaも)だ
はじめに この記事は CrowdWorks Advent Calendar 2016 12日目の記事です。 昨日のエントリーは @nasum さんによる「nasneの容量をシェルスクリプトでSlackに通知する」でした。 先日起きたことを、ありのままに1話します。 MySQL にあるデータを Elasticsearch (以下 ES と略) にインデックスしようとしていたと思ったら、いつの間にか Ruby の C 拡張をデバッグしていた。な、何を言ってるのか (ry おまえは何を言っているんだ 三行でまとめると、 Ruby を使って ES にインデックスを作ろうとしたら予期しない現象に遭遇して、 原因を探ろうとしたら C 拡張で実装されている箇所だったので、 しょうがないからデバッグする方法を調べた という話です。 発端 事の起こりは、自社サービスのデータベースに溜まっているデータをより効
C言語 Advent Calendar 2016を書く人が少ないので、、 C言語を触っていたころを思い出して書いてみようと思いました。 ここから 前回、マルチプラットフォーム対応したライブラリGolangを紹介しましたが、 実際のところ、どの程度c-sharedしたライブラリを利用する機会があるのでしょうか。 GoはcgoというC/C++のライブラリと連携する機能をサポートしており、 手軽にGoからC/C++のAPIを呼び出せます。 しかしC/C++からGoを呼び出す機能は、使いみちが結構限られており、 主な使いみちは、Goで実装された機能を 他言語から利用したい場合に限られるのではないかと推測します。 もうちょっと具体的にいうと、 Goで開発された機能を他言語にポーティングするのが面倒だから、 c-sharedでライブラリ化して他言語から呼び出しちゃおうっていうことです。 c-share
Mirai (from the Japanese word for "future", 未来) is malware that turns networked devices running Linux into remotely controlled bots that can be used as part of a botnet in large-scale network attacks. It primarily targets online consumer devices such as IP cameras and home routers.[1] The Mirai botnet was first found in August 2016[2] by MalwareMustDie,[3] a white hat malware research group, and h
Now that Ruby has crested the hype cycle, settled down and taken out a mortgage, you'd expect the posts around the community to be more about big business concerns. Whilst that might be true, I'd like to row against the tide by telling you about the fun I had figuring out how to write my first C extension - fast_osc - and how I made Sonic Pi 10x faster in the process. Before we get stuck into the
なんとなく分かった気でいるふたつのライブラリ。 それを小さなテストコードを使いながら整理してみます。 (ちなみに今回紹介するのはMacでのものです。Linuxではフォーマット、コンパイル方法などが異なります) 静的ライブラリをコンパイルする まずは静的ライブラリです。 ちなみにMacではMach-Oというフォーマットを使います。 (Linuxでは「ELF(Executable and Linking Format)」というらしい) こちらの記事が分かりやすかったです。 また、静的ライブラリはオブジェクトファイルをまとめたただのアーカイブです。 (なのでar(アーカイブ)コマンドを使う) 例として以下のように静的ライブラリの中身を定義しました。
Libraries employ a software design also known as "shared components" or "archive libraries", which groups together multiple compiled object code files into a single file known as a library. Typically C functions/C++ classes and methods which can be shared by more than one application are broken out of the application's source code, compiled and bundled into a library. The C standard libraries and
リンケージエディタの例 リンケージエディタ(英: linkage editor)またはリンカ(英: linker)とは、機械語のプログラムの断片を結合し実行可能なプログラムを作成するプログラムのことである。例として、C言語では、ソースファイルをコンパイルするとオブジェクトファイルが生成される。それに他のオブジェクトファイルやライブラリを結合して1つの実行可能なプログラム(実行可能ファイル)が完成する。この結合(リンク)の際リンケージエディタが使われる。 日本語では「連係編集プログラム」[1]とも訳される。 リンクの種類[編集] 静的リンク[編集] 静的リンクは、リンク時に他のオブジェクトやライブラリをすべて1つのファイルに結合する方法。この方法では、出来上がったプログラムは、単独で動作することができる。単独で動作させなければならない組み込み向けプログラムなどでよく使われる。必要とされるすべ
インラインアセンブラ(英: inline assembler)は、主にC言語やC++などで書かれたプログラムの中にアセンブリ言語によるプログラムを埋め込むことができるようにする、コンパイラの機能である[1]。 コンパイラの一機能を指しており、高水準言語で書かれたソースコードに埋めこまれたアセンブリ言語によるコードも機械語に変換する機能のこと。 この機能があれば、アセンブリ言語で書かれたコードをわざわざ別途アセンブラでアセンブル(機械語に変換)してリンクするという手間が省ける。特定のプロセッサが持つ特殊な拡張命令も使えるというメリットや、高速化が図れるなどのメリットがある[1]。 一方デメリットとして、機種に強く依存したアセンブリ言語のコードをソースコードに含んでしまうことになるため、C言語などの高級言語の強みであるソースレベル互換性が低下する。 インラインアセンブラを利用する目的には次のよ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く