SlideShare a Scribd company logo
1 of 14
Download to read offline
Cocoa勉強会 #33関東

意外に楽に使えるlibcurl
新居雅行
nii@msyk.net

2009年4月8日水曜日

1
Agenda

•
•
•

2009年4月8日水曜日

curlとlibcurlの紹介
libcurlの使い方
プログラムの実例

2
curlとlibcurlとは

•

cURL and libcurl

•
•
•
• curlコマンド
•
•
• libcurl
•

オープンソースの通信ツール
Client for URLs or Client for URL Request Library
MIT/X derivate license
URLを与えて通信処理ができる
コマンドは「カール」と発音する
curlコマンドの機能をC言語のAPIから利用できる

2009年4月8日水曜日

3
libcurlについて

•

URLを指定した通信機能を提供

•
•
•
•

•
•

スレッドセーフ、IPv6対応したライブラリ
バージョンを重ねてかなりの高機能に
ドキュメントが充実している

Mac OS Xには標準搭載
APIはC言語だが、さまざまな言語で利用できる

•
•

2009年4月8日水曜日

オープンソース

例えばPHPやJavaなど
CocoaクラスのCURLHANDLE(NSURLHandleのサ
ブクラス)もあるが、フルスペックではない

4
プロジェクトでliburlを使う

•
•

プロジェクトにlibcurlへの参照を作る
ヘッダには、以下のように記入するのみでOK

•

2009年4月8日水曜日

#import <curl/curl.h>

5
libcurlの参照

•
•

プロジェクトに新しく
ファイル加える
/usr/libにあるライブラ
リを追加

•
•
2009年4月8日水曜日

libcurl.4.dylib以外は全部
これへのシンボリックリ
ンク
いずれも4つのアーキテ
クチャをサポート

6
ライブラリの番号とバージョン

•

libcurl.n.dylibの「n」はライブラリの番号

•
•
•
•
•
•
•
libcurl最新版(Mac OS X 10.5.6)
•
•
•

libcurlでは、apacheのモジュールの番号で管理
SONAMEとして参照されている

libcurl.4.soなどをapacheが利用(Linuxなど)

SONAME=1/ libcurl Ver.7.4.2(2000/11)より付ける
SONAME=2/ libcurl Ver.7.7 - 2001/3/22
SONAME=3/ libcurl Ver.7.12.0 - 2004/6/12
SONAME=4/ libcurl Ver.7.16.0 - 2006/10/30
curl_version()→libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
libphp5.soやphpコマンドがlibcurl.4.dylibをロードしている

2009年4月8日水曜日

7
プログラムのポイント

•

基本的には何でも以下の手順でOK

(1) 初期化してハンドルを得る
(2) URLを教える
(3) その他のパラメータを設定(オプション設定)
(4) 実行する
(5) 後始末

•

データの受信

•
•

2009年4月8日水曜日

コールバック関数を規定に従って定義
関数をパラメータとして指定

8
char *buffer;

URLへの単純なアクセス

size_t receivedCallback( void *ptr, size_t size, size_t nmemb, void *stream)	
{
	 int endPoint = strlen( buffer );
	 memcpy( buffer + endPoint, ptr, size * nmemb );
	 buffer[endPoint + size * nmemb + 1]=0;
コールバック関数
	 return size * nmemb;
}
void simpleHTTP( const char* url, char *receivedStr )	
{
	 buffer = receivedStr;
URLはhttp://…を指定
	 buffer[0] = 0;
❶初期化とハンドル取得
	 CURLcode cc = curl_global_init( CURL_GLOBAL_ALL );
	 if ( cc == 0 )	
{
❷URLを指定する
	 	
CURL *curlHandle = curl_easy_init();
	 	
curl_easy_setopt( curlHandle, CURLOPT_URL, url );
	 	
curl_easy_setopt( curlHandle, CURLOPT_WRITEFUNCTION, receivedCallback );
	 	
	 	
curl_easy_setopt( curlHandle, CURLOPT_VERBOSE, 1 );
❸オプションの指定
	 	
CURLcode success = curl_easy_perform( curlHandle );
デバッグに if ( success != 0 )	{
	 	
便利 	
	
	
sprintf( receivedStr, "libcurl error: %d", success );
❹実行
	 	
}
	 	
curl_easy_cleanup( curlHandle );
	 }
❺後始末
}
2009年4月8日水曜日

9
HTTPのポスト
void httpPost( const char* url, const char* postStr, char *receivedStr )	 {
	 buffer = receivedStr;
	 buffer[0] = 0;
POST用のデータを作る
	 CURLcode cc = curl_global_init( CURL_GLOBAL_ALL );
が、URLエンコードは
	 if ( cc == 0 )	
{
libcurlの関数を使う
	 	
CURL *curlHandle = curl_easy_init();
	 	
curl_easy_setopt( curlHandle, CURLOPT_URL, url );
	 	
curl_easy_setopt( curlHandle, CURLOPT_WRITEFUNCTION, receivedCallback );
	 	
char *urlEncoded = curl_easy_escape( curlHandle , postStr , 0 );
	 	
char *param = "postdata";
	 	
char *postData = malloc( strlen( urlEncoded ) + strlen( param ) + 2 );
	 	
strcpy( postData, param );
	 	
strcat( postData, "=" );
	 	
strcat( postData, urlEncoded );
	 	
curl_easy_setopt(curlHandle, CURLOPT_POSTFIELDS, postData);
	 	
	 	
curl_easy_setopt( curlHandle, CURLOPT_VERBOSE, 1 );
	 	
CURLcode success = curl_easy_perform( curlHandle );
	 	
if ( success != 0 )	{
	 	
	
sprintf( receivedStr, "libcurl error: %d", success );
	 	
}
	 	
free( postData );
	 	
curl_free( urlEncoded );
	 	
curl_easy_cleanup( curlHandle );
	 }
}
2009年4月8日水曜日

10
SSLを使った通信
URLはhttps://…を指定
void https( const char* url, char *receivedStr )	 {
オプションの指定
	 buffer = receivedStr;
	 buffer[0] = 0;
後者は自己署名のサイトで
	 CURLcode cc = curl_global_init( CURL_GLOBAL_ALL );
もエラーにならなくなる
	 if ( cc == 0 )	
{
	 	
CURL *curlHandle = curl_easy_init();
	 	
curl_easy_setopt( curlHandle, CURLOPT_URL, url );
	 	
curl_easy_setopt( curlHandle, CURLOPT_WRITEFUNCTION, receivedCallback );
//	
	
curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYPEER, 0L);
//	
	
curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYHOST, 0L);
	 	
curl_easy_setopt( curlHandle, CURLOPT_VERBOSE, 1 );
	 	
CURLcode success = curl_easy_perform( curlHandle );
	 	
if ( success != 0 )	{
	 	
	
sprintf( receivedStr, "libcurl error: %d", success );
	 	
}
	 	
curl_easy_cleanup( curlHandle );
	 }
}

2009年4月8日水曜日

11
認証が必要なWebサイト

void httpAuth( const char* url, const char* username, const char* password, char *received
	 buffer = receivedStr;
	 buffer[0] = 0;
認証情報はユーザ名とパス
	 CURLcode cc = curl_global_init( CURL_GLOBAL_ALL );
ワードをつなげて指定
	 if ( cc == 0 )	
{
	 	
CURL *curlHandle = curl_easy_init();
	 	
curl_easy_setopt( curlHandle, CURLOPT_URL, url );
	 	
curl_easy_setopt( curlHandle, CURLOPT_WRITEFUNCTION, receivedCallback );
	 	
char *authInfo = malloc( strlen( username ) + strlen( password ) + 2 );
	 	
strcpy( authInfo, username );
	 	
strcat( authInfo, ":" );
	 	
strcat( authInfo, password );
	 	
curl_easy_setopt( curlHandle, CURLOPT_USERPWD, authInfo );
	 	
curl_easy_setopt( curlHandle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST|CURLAUTH_BASIC);
	 	
	 	
curl_easy_setopt( curlHandle, CURLOPT_VERBOSE, 1 );
	 	
CURLcode success = curl_easy_perform( curlHandle );
	 	
if ( success != 0 )	{
	 	
	
sprintf( receivedStr, "libcurl error: %d", success );
	 	
}
	 	
curl_easy_cleanup( curlHandle );
	 	
free( authInfo );
	 }
}
2009年4月8日水曜日

12
CURLOPT_VERBOSE

2009年4月8日水曜日

13
まとめとURL

•
•
•
•

簡単に使えるlibcurl
Cでの文字列処理はちょっと面倒
動作の原理を知ればCURLHANDLEも便利
URLs

•
•
•
•

cURL and libcurl
http://curl.haxx.se/

CURLHANDLE

2009年4月8日水曜日

http://code.google.com/p/curlhandle/

14

More Related Content

What's hot

2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみるairtoxin Ishii
 
処理概要図&構築手順書1124
処理概要図&構築手順書1124処理概要図&構築手順書1124
処理概要図&構築手順書1124Kazuki Miura
 
clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)
clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)
clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)洋史 東平
 
HUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜ
HUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜHUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜ
HUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜbasicinc_dev
 
PythonでRakeもどきを作ってみた
PythonでRakeもどきを作ってみたPythonでRakeもどきを作ってみた
PythonでRakeもどきを作ってみたkwatch
 
CouchDB JP & BigCouch
CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouchYohei Sasaki
 
B lack jumbodog 運転と改造のすすめ
B lack jumbodog 運転と改造のすすめB lack jumbodog 運転と改造のすすめ
B lack jumbodog 運転と改造のすすめShinichi Hirauchi
 
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」Shinichi Hirauchi
 
ぼくの考えた最強のpipeline構成
ぼくの考えた最強のpipeline構成ぼくの考えた最強のpipeline構成
ぼくの考えた最強のpipeline構成Naoto Nishizono
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能についてshigeki_ohtsu
 
これだけMakefile (Basics of makefile)
これだけMakefile (Basics of makefile)これだけMakefile (Basics of makefile)
これだけMakefile (Basics of makefile)seichi23
 
RPCノード構築方法【Litecoin】
RPCノード構築方法【Litecoin】RPCノード構築方法【Litecoin】
RPCノード構築方法【Litecoin】qaz_id
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよnpsg
 
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~Preferred Networks
 
Openstack calendar20141222
Openstack calendar20141222Openstack calendar20141222
Openstack calendar20141222samemoon
 
Yapcasia2012 ltthon
Yapcasia2012 ltthonYapcasia2012 ltthon
Yapcasia2012 ltthonturugina
 

What's hot (20)

2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる
 
処理概要図&構築手順書1124
処理概要図&構築手順書1124処理概要図&構築手順書1124
処理概要図&構築手順書1124
 
clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)
clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)
clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)
 
HUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜ
HUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜHUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜ
HUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜ
 
PythonでRakeもどきを作ってみた
PythonでRakeもどきを作ってみたPythonでRakeもどきを作ってみた
PythonでRakeもどきを作ってみた
 
CouchDB JP & BigCouch
CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouch
 
B lack jumbodog 運転と改造のすすめ
B lack jumbodog 運転と改造のすすめB lack jumbodog 運転と改造のすすめ
B lack jumbodog 運転と改造のすすめ
 
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
 
ぼくの考えた最強のpipeline構成
ぼくの考えた最強のpipeline構成ぼくの考えた最強のpipeline構成
ぼくの考えた最強のpipeline構成
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能について
 
Kubernetesできること
KubernetesできることKubernetesできること
Kubernetesできること
 
SystemV IPC
SystemV IPCSystemV IPC
SystemV IPC
 
これだけMakefile (Basics of makefile)
これだけMakefile (Basics of makefile)これだけMakefile (Basics of makefile)
これだけMakefile (Basics of makefile)
 
Yesod on Heroku
Yesod on HerokuYesod on Heroku
Yesod on Heroku
 
RPCノード構築方法【Litecoin】
RPCノード構築方法【Litecoin】RPCノード構築方法【Litecoin】
RPCノード構築方法【Litecoin】
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
 
Unix
UnixUnix
Unix
 
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
 
Openstack calendar20141222
Openstack calendar20141222Openstack calendar20141222
Openstack calendar20141222
 
Yapcasia2012 ltthon
Yapcasia2012 ltthonYapcasia2012 ltthon
Yapcasia2012 ltthon
 

Similar to Cocoa勉強会#33-意外に楽に使えるlibcurl

Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目龍一 田中
 
MackerelAPI使ってみた
MackerelAPI使ってみたMackerelAPI使ってみた
MackerelAPI使ってみたShugo Numano
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionYoshifumi Kawai
 
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)洋史 東平
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
第2回 松本勉強会 2012 05 25 - apache2.4とmod_luaRyosuke MATSUMOTO
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでRyo Nakamaru
 
Mr201304 open flow_security_jpn
Mr201304 open flow_security_jpnMr201304 open flow_security_jpn
Mr201304 open flow_security_jpnFFRI, Inc.
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Masahiro Nagano
 
C++ lecture-0
C++ lecture-0C++ lecture-0
C++ lecture-0sunaemon
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンKazuyuki Miyake
 
フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察cch-robo
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西Masahide Yamamoto
 
Google Apps Scirpt勉強会 #1
Google Apps Scirpt勉強会 #1Google Apps Scirpt勉強会 #1
Google Apps Scirpt勉強会 #1ikikko
 

Similar to Cocoa勉強会#33-意外に楽に使えるlibcurl (20)

Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目
 
MackerelAPI使ってみた
MackerelAPI使ってみたMackerelAPI使ってみた
MackerelAPI使ってみた
 
Open modeler
Open modelerOpen modeler
Open modeler
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
 
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
 
qmake入門
qmake入門qmake入門
qmake入門
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
Mr201304 open flow_security_jpn
Mr201304 open flow_security_jpnMr201304 open flow_security_jpn
Mr201304 open flow_security_jpn
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
C++ lecture-0
C++ lecture-0C++ lecture-0
C++ lecture-0
 
Docker Swarm入門
Docker Swarm入門Docker Swarm入門
Docker Swarm入門
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
 
Embulk 20150411
Embulk 20150411Embulk 20150411
Embulk 20150411
 
フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察
 
JavaScript入門
JavaScript入門JavaScript入門
JavaScript入門
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 
Google Apps Scirpt勉強会 #1
Google Apps Scirpt勉強会 #1Google Apps Scirpt勉強会 #1
Google Apps Scirpt勉強会 #1
 

More from Masayuki Nii

Framework Enabling End-Users to Maintain Web Applications (ICICWS2015)
Framework Enabling End-Users to Maintain Web Applications (ICICWS2015)Framework Enabling End-Users to Maintain Web Applications (ICICWS2015)
Framework Enabling End-Users to Maintain Web Applications (ICICWS2015)Masayuki Nii
 
トップエスイー勉強会2014第1回-INTER-Mediator
トップエスイー勉強会2014第1回-INTER-Mediatorトップエスイー勉強会2014第1回-INTER-Mediator
トップエスイー勉強会2014第1回-INTER-MediatorMasayuki Nii
 
Cocoa勉強会#62-新しい通信クラス群NSURLSessionを使ってみる
Cocoa勉強会#62-新しい通信クラス群NSURLSessionを使ってみるCocoa勉強会#62-新しい通信クラス群NSURLSessionを使ってみる
Cocoa勉強会#62-新しい通信クラス群NSURLSessionを使ってみるMasayuki Nii
 
Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法
Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法
Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法Masayuki Nii
 
Cocoa勉強会#61-メインスレッド外でNSURLConnection
Cocoa勉強会#61-メインスレッド外でNSURLConnectionCocoa勉強会#61-メインスレッド外でNSURLConnection
Cocoa勉強会#61-メインスレッド外でNSURLConnectionMasayuki Nii
 
Cocoa勉強会#23-カスタムシートとModality
Cocoa勉強会#23-カスタムシートとModalityCocoa勉強会#23-カスタムシートとModality
Cocoa勉強会#23-カスタムシートとModalityMasayuki Nii
 
Cocoa勉強会#6-SQLiteをCocoaで使う
Cocoa勉強会#6-SQLiteをCocoaで使うCocoa勉強会#6-SQLiteをCocoaで使う
Cocoa勉強会#6-SQLiteをCocoaで使うMasayuki Nii
 
Cocoa勉強会#60-Common Cryptoを使った共通鍵の暗号と復号
Cocoa勉強会#60-Common Cryptoを使った共通鍵の暗号と復号Cocoa勉強会#60-Common Cryptoを使った共通鍵の暗号と復号
Cocoa勉強会#60-Common Cryptoを使った共通鍵の暗号と復号Masayuki Nii
 
Cocoa勉強会#57-Baseによるローカライズまとめ
Cocoa勉強会#57-BaseによるローカライズまとめCocoa勉強会#57-Baseによるローカライズまとめ
Cocoa勉強会#57-BaseによるローカライズまとめMasayuki Nii
 
Cocoa勉強会#56-小ネタ集あなたの常識はすでに通用しない
Cocoa勉強会#56-小ネタ集あなたの常識はすでに通用しないCocoa勉強会#56-小ネタ集あなたの常識はすでに通用しない
Cocoa勉強会#56-小ネタ集あなたの常識はすでに通用しないMasayuki Nii
 
Cocoa勉強会#45-AWS SimpleDBを使ってみる
Cocoa勉強会#45-AWS SimpleDBを使ってみるCocoa勉強会#45-AWS SimpleDBを使ってみる
Cocoa勉強会#45-AWS SimpleDBを使ってみるMasayuki Nii
 
Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー
Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビューCocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー
Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビューMasayuki Nii
 
Cocoa勉強会#28-OpenSSLで暗号化したファイルを復号する
Cocoa勉強会#28-OpenSSLで暗号化したファイルを復号するCocoa勉強会#28-OpenSSLで暗号化したファイルを復号する
Cocoa勉強会#28-OpenSSLで暗号化したファイルを復号するMasayuki Nii
 
Cocoa勉強会#27-QuickLookプラグインの作り方
Cocoa勉強会#27-QuickLookプラグインの作り方Cocoa勉強会#27-QuickLookプラグインの作り方
Cocoa勉強会#27-QuickLookプラグインの作り方Masayuki Nii
 
Cocoa勉強会23-識別情報の変換〜文字エンコードとデータタイプ
Cocoa勉強会23-識別情報の変換〜文字エンコードとデータタイプCocoa勉強会23-識別情報の変換〜文字エンコードとデータタイプ
Cocoa勉強会23-識別情報の変換〜文字エンコードとデータタイプMasayuki Nii
 
Cocoa勉強会#37-シェイクイベントの実装
Cocoa勉強会#37-シェイクイベントの実装Cocoa勉強会#37-シェイクイベントの実装
Cocoa勉強会#37-シェイクイベントの実装Masayuki Nii
 
Cocoa勉強会#32-表形式のデータに順序を記録する方法
Cocoa勉強会#32-表形式のデータに順序を記録する方法Cocoa勉強会#32-表形式のデータに順序を記録する方法
Cocoa勉強会#32-表形式のデータに順序を記録する方法Masayuki Nii
 
Cocoa勉強会#35-iPhoneでのコピペとカスタムUI
Cocoa勉強会#35-iPhoneでのコピペとカスタムUICocoa勉強会#35-iPhoneでのコピペとカスタムUI
Cocoa勉強会#35-iPhoneでのコピペとカスタムUIMasayuki Nii
 
Cocoa勉強会#47-NSURLConnectionのデリゲートメソッドと認証
Cocoa勉強会#47-NSURLConnectionのデリゲートメソッドと認証Cocoa勉強会#47-NSURLConnectionのデリゲートメソッドと認証
Cocoa勉強会#47-NSURLConnectionのデリゲートメソッドと認証Masayuki Nii
 
Cocoa勉強会#38-UITableViewテーブル内のナビゲーション
Cocoa勉強会#38-UITableViewテーブル内のナビゲーションCocoa勉強会#38-UITableViewテーブル内のナビゲーション
Cocoa勉強会#38-UITableViewテーブル内のナビゲーションMasayuki Nii
 

More from Masayuki Nii (20)

Framework Enabling End-Users to Maintain Web Applications (ICICWS2015)
Framework Enabling End-Users to Maintain Web Applications (ICICWS2015)Framework Enabling End-Users to Maintain Web Applications (ICICWS2015)
Framework Enabling End-Users to Maintain Web Applications (ICICWS2015)
 
トップエスイー勉強会2014第1回-INTER-Mediator
トップエスイー勉強会2014第1回-INTER-Mediatorトップエスイー勉強会2014第1回-INTER-Mediator
トップエスイー勉強会2014第1回-INTER-Mediator
 
Cocoa勉強会#62-新しい通信クラス群NSURLSessionを使ってみる
Cocoa勉強会#62-新しい通信クラス群NSURLSessionを使ってみるCocoa勉強会#62-新しい通信クラス群NSURLSessionを使ってみる
Cocoa勉強会#62-新しい通信クラス群NSURLSessionを使ってみる
 
Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法
Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法
Cocoa勉強会#34-iPhoneでタブバーを非表示に無理矢理する方法
 
Cocoa勉強会#61-メインスレッド外でNSURLConnection
Cocoa勉強会#61-メインスレッド外でNSURLConnectionCocoa勉強会#61-メインスレッド外でNSURLConnection
Cocoa勉強会#61-メインスレッド外でNSURLConnection
 
Cocoa勉強会#23-カスタムシートとModality
Cocoa勉強会#23-カスタムシートとModalityCocoa勉強会#23-カスタムシートとModality
Cocoa勉強会#23-カスタムシートとModality
 
Cocoa勉強会#6-SQLiteをCocoaで使う
Cocoa勉強会#6-SQLiteをCocoaで使うCocoa勉強会#6-SQLiteをCocoaで使う
Cocoa勉強会#6-SQLiteをCocoaで使う
 
Cocoa勉強会#60-Common Cryptoを使った共通鍵の暗号と復号
Cocoa勉強会#60-Common Cryptoを使った共通鍵の暗号と復号Cocoa勉強会#60-Common Cryptoを使った共通鍵の暗号と復号
Cocoa勉強会#60-Common Cryptoを使った共通鍵の暗号と復号
 
Cocoa勉強会#57-Baseによるローカライズまとめ
Cocoa勉強会#57-BaseによるローカライズまとめCocoa勉強会#57-Baseによるローカライズまとめ
Cocoa勉強会#57-Baseによるローカライズまとめ
 
Cocoa勉強会#56-小ネタ集あなたの常識はすでに通用しない
Cocoa勉強会#56-小ネタ集あなたの常識はすでに通用しないCocoa勉強会#56-小ネタ集あなたの常識はすでに通用しない
Cocoa勉強会#56-小ネタ集あなたの常識はすでに通用しない
 
Cocoa勉強会#45-AWS SimpleDBを使ってみる
Cocoa勉強会#45-AWS SimpleDBを使ってみるCocoa勉強会#45-AWS SimpleDBを使ってみる
Cocoa勉強会#45-AWS SimpleDBを使ってみる
 
Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー
Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビューCocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー
Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー
 
Cocoa勉強会#28-OpenSSLで暗号化したファイルを復号する
Cocoa勉強会#28-OpenSSLで暗号化したファイルを復号するCocoa勉強会#28-OpenSSLで暗号化したファイルを復号する
Cocoa勉強会#28-OpenSSLで暗号化したファイルを復号する
 
Cocoa勉強会#27-QuickLookプラグインの作り方
Cocoa勉強会#27-QuickLookプラグインの作り方Cocoa勉強会#27-QuickLookプラグインの作り方
Cocoa勉強会#27-QuickLookプラグインの作り方
 
Cocoa勉強会23-識別情報の変換〜文字エンコードとデータタイプ
Cocoa勉強会23-識別情報の変換〜文字エンコードとデータタイプCocoa勉強会23-識別情報の変換〜文字エンコードとデータタイプ
Cocoa勉強会23-識別情報の変換〜文字エンコードとデータタイプ
 
Cocoa勉強会#37-シェイクイベントの実装
Cocoa勉強会#37-シェイクイベントの実装Cocoa勉強会#37-シェイクイベントの実装
Cocoa勉強会#37-シェイクイベントの実装
 
Cocoa勉強会#32-表形式のデータに順序を記録する方法
Cocoa勉強会#32-表形式のデータに順序を記録する方法Cocoa勉強会#32-表形式のデータに順序を記録する方法
Cocoa勉強会#32-表形式のデータに順序を記録する方法
 
Cocoa勉強会#35-iPhoneでのコピペとカスタムUI
Cocoa勉強会#35-iPhoneでのコピペとカスタムUICocoa勉強会#35-iPhoneでのコピペとカスタムUI
Cocoa勉強会#35-iPhoneでのコピペとカスタムUI
 
Cocoa勉強会#47-NSURLConnectionのデリゲートメソッドと認証
Cocoa勉強会#47-NSURLConnectionのデリゲートメソッドと認証Cocoa勉強会#47-NSURLConnectionのデリゲートメソッドと認証
Cocoa勉強会#47-NSURLConnectionのデリゲートメソッドと認証
 
Cocoa勉強会#38-UITableViewテーブル内のナビゲーション
Cocoa勉強会#38-UITableViewテーブル内のナビゲーションCocoa勉強会#38-UITableViewテーブル内のナビゲーション
Cocoa勉強会#38-UITableViewテーブル内のナビゲーション
 

Recently uploaded

プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 

Recently uploaded (8)

プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 

Cocoa勉強会#33-意外に楽に使えるlibcurl