Blog - 全て


MacBookProが充電されない→ロジックボード不具合→ファームウェアパスワード解除

ある日突然MacBookPro(13inch 2011 early)のバッテリーが充電されなくなって自力で修理したという話。
【症状】
・MagSafe のLEDが常に緑点灯(非充電中)
・MagSafe を繋いだ状態で電源ボタンを押しても起動しない(Fan回る→停止→Fan回るを永遠繰り返す)
※MagSafe を取り外した状態から電源ボタン押しっぱなしでMagSafe 取り付けて、暫くしてから電源ボタンを離すとOSが起動する(常時Fanフル回転)
・デスクトップ上部ステータスバーのバッテリーアイコンが無い
・システム情報のハードウェア→電源のバッテリー情報が無い
バッテリーが完全に放電して充電されないのでバッテリーが取外されているのと同じような状態となっていると推測される。
ということでバッテリーが充電されない原因を調査した。
関係しそうなパーツを取っ替え引っ換えして切り分けしながら原因箇所を絞り込んで自力で直してみようと思う!
【調査結果】
SMCリセット•••改善なし
バッテリー交換•••改善なし
③ACアダプタ交換•••改善なし
MagSafe DC-in Board交換•••改善なし
続きを読む 0 コメント

launchdでvpndを自動起動。あれっ?繋がらない?

launchdを使ってOS起動時にvpndを自動起動してみた。

 

こちらを参考にさせて頂きました。

 

なお設定環境は以下となります。

MacBookPro (13-inch, Early 2011)

OS X El Capitan 10.11.4

続きを読む 0 コメント

linkstation nas LS-XLの1.65から1.60へのダウングレードとsshアクセス

※はじめに、この記事は個人的な備忘録です。参考にされる方は自己責任でお願い致します。

 

 

私の自宅で使ってるBuffaloのlinkstation LS-XLシリーズ(LS-X2.0TLJ)へssh接続できる様にhackしてみた。

 

まず、自宅のNasはFirmware versionが1.65。現状のファームでssh有効化設定を試みたがsshdデーモンが起動しないことがわかった。telnetdでも無理だった。はっきりはわからないのですが、firmware起因としてダウングレードすることにしました。

 

【PC環境】

MacBookPro(2011 early) OSX v.10.8.4

 

◆LinkstationのFirmwareダウングレード

【実際の手順】

1.Linkstationシリーズファームウェアアップデーター(Macintosh) Ver.1.60を手に入れる

  →ls_series-160_fwmac.dmg(Buffalo HP)

2.ls_series-160_fwmac.dmgを実行し解凍

3.2つのファイル(”update”,"data")を適当な場所(デスクトップとか)にコピー

4.data/LSUpdater.iniをviで開き編集する

 

  23行目以降を下記の様に編集する

  [Flags]

  VersionCheck = 0←defaultの"1"を"0"に書き換える

  NoFormatting = 1

  [SpecialFlags]←追記する

  Debug = 1←追記する

 

5."update"ファイルを実行する

 →Firmwareの書き換えが始まるので終わるまで待つ。

  更新が終わりnasの再起動が始まる。2分置きにnasとの接続の確立を確認する動作が行われるが10〜20分くらい経ってもnasが検出されない。最終的にはエラーで終了するが、実際には起動は完了していた。試しにNASNavigator2だったか最新のファームウェアアップデーターを実行したらnasは検出されたのでOKとする。

6.nas動作確認

 →Web設定より、各種設定の確認。その他→メディアサーバーのDLNAサーバーとiTunesサーバーが何故か”使用する”に変わっていた。

7.nasへの接続確認

 「Finder→移動→サーバーへ接続」よりafp接続はOK。smb接続はNG。ユーザー名とパスワードを聞くポップアップが表示されて入力するもブルブルして拒否られる。別のユーザ名で接続するとOK。Web設定より、「ユーザー/グループ→ユーザー」からユーザーの削除/再登録を実施したところsmb接続ができるようになった。ファームの書き換えでユーザー情報が上手く更新されなかったのか?TimeMachine機能は問題無く動作することを確認。

私のMBPではnasをsmbでautomountしているのですがこちらも上手くいきました。(afp接続もOKでした)

 

以上でLinkstationのファームウェアのダウングレードは完了。

 

◆sshd有効化

 

【準備するもの】

1.acp_commander.jar

 ※nasへログイン出来ない状態でもroot権限でコマンドの実行が可能となる

2.ターミナル

 

【実行】

1.ネットで得た知識からスクリプト作成し実行(acp_commander.jarが有る場所で実行)

 

mac:tool user$ more nas.sh

IP=192.168.0.x←NasのローカルIP

Admin_PW=admpassword←現在のadminユーザーのパスワード

 

java -jar acp_commander.jar -t $IP -ip $IP -pw $Admin_PW -c "sed -i 's/root:[^:]*:/root::/g' /etc/shadow"

java -jar acp_commander.jar -t $IP -ip $IP -pw $Admin_PW -c "sed -i 's/UsePAM yes/UsePAM no/g' /etc/sshd_config"

java -jar acp_commander.jar -t $IP -ip $IP -pw $Admin_PW -c "sed -i 's/PermitRootLogin no/PermitRootLogin yes/g' /etc/sshd_config"

java -jar acp_commander.jar -t $IP -ip $IP -pw $Admin_PW -c "(echo 'PermitEmptyPasswords yes') >> /etc/sshd_config"

java -jar acp_commander.jar -t $IP -ip $IP -pw $Admin_PW -c "(echo 'sshd:ALL') >> /etc/hosts.allow"

java -jar acp_commander.jar -t $IP -ip $IP -pw $Admin_PW -c "(echo 'ssh stream tcp nowait root /usr/local/sbin/sshd /usr/local/sbin/sshd -i') >> /etc/inetd.conf"

java -jar acp_commander.jar -t $IP -ip $IP -pw $Admin_PW -c "/etc/init.d/sshd.sh restart"

 

主にやっていることはsshのconfigファイルの書き換えです。

 

スクリプトの流れとしては、

1.defaultでnasのrootに設定されているパスワードをクリアする

2.sshd_configの中身を書き換える

3.hosts.allowへ全てのユーザーがsshでアクセスできる様に設定(たぶん)

4.サーバー起動時に自動でsshdが起動するようにinetd.confへ追記

5.sshの設定ファイルを変更したのでsshdデーモン再起動して設定を反映させる

 

以上でsshでnasへ接続できるようになりました。(この時点ではパスワード無しでログインできてしまう状態です。)

 

脆弱な状態なのですぐにrootのパスワードを設定してあげましょう。

また、パスワードを設定したら/etc/sshd_configの「PermitEmptyPasswords yes」はコメントアウトするか行を削除しましょう。

 

sshでアクセスが可能になり自由度が広がったので色々やってみようと考えているところです。さてと、何をやろうかな...?

 

続きを読む 1 コメント

iPhoto 9.5へのアップデート不具合

OS X Mavericksへアップデート後、AppStoreへAperture 3.5のアップデートがあったので実行しました。

その後Apertureを起動するとフォトライブラリのアップグレードを行う必要が有るとのこと(ライブラリを更新すると旧Verでは開けなくなる)だったので、とりあえず更新した(一瞬で終わった)。

 

と、ここまでは問題無し。

 

次にiPhotoからそのライブラリを開こうとしたら上記でライブラリを更新したせいで現在のバージョン(9.4.3)のiPhotoでは開けないのでアップデートしろと言われた。別のライブラリ(上記でアップグレードしたのとは別のもの)をiPhotoで開くとこれまで通り開けた。

 

はいはい、わかりましたよ。

 

で、App Storeからアップデートを確認。

しかーし、iPhotoのアップデートなんて出てこないじゃないか!

App StoreでiPhotoを検索すると最新バージョンの9.5が¥1,500であった。

え!?有償ですか?そんなことは無いだろ。

(一瞬フリーズ・・・)

App Storeから一度サインアウトしてからサインインし直したけど変わらず。

 

google先生に聞いてみると同様の症状が多数報告されているようでした。

 

結論は、Ver.9.4.3から普通に無償でVer.9.5へアップデートできます。

AppStoreのバグなのかもしれませんがOSの言語設定を"English"に変更して(再起動が必要になります)からAppStoreを開きUpdatesを確認するとiPhotoのアップデートが表示されました。

 

その後iPhotoのアップデートは正常に終了し、起動も問題無くできました。

 

 同様のブログを見つけましたので張らせて頂きます。

2 コメント

Sonnar T* E 24mm F1.8 TEST

続きを読む 2 コメント

MacBookProでvpnサーバーを立てる(vpndデーモンを起動するだけ)

MacBookPro OSX LION 10.8.3の環境でvpnサーバーを立ててみた。

 

MacBookProには標準でvpnサーバーを立てるツールが無い。

ということで、以前VPN Activatorというソフトを使用していた。

このVPN Activatorというのが何をやっているのかターミナルからプロセスを確認。

 

    0  2651     1   0 11:11AM ??         0:00.00 vpnd -i com.apple.ppp.pptp

    0  2652     1   0 11:11AM ??         0:00.00 vpnd -i com.apple.ppp.l2tp

 

というデーモンを起動させているようだった。

 

なんだー、簡単なことだ!

さっそく、/usr/sbin/vpnd を起動させてみた。root権限で起動する必要があります。

 

 

bash-3.2$ sudo vpnd -i com.apple.ppp.pptp

(rootのパスワードを聞かれるので入力)

 

bash-3.2$ ps -ef |grep -i vpnd

    0  2736     1   0 11:16AM ??         0:00.00 vpnd -i com.apple.ppp.pptp

 

 

ほぉ。

続いて、

 

 

bash-3.2$ sudo vpnd -i com.apple.ppp.l2tp

(rootのパスワードを聞かれるので入力)

 

bash-3.2$ ps -ef |grep -i vpnd

    0  2736     1   0 11:16AM ??         0:00.00 vpnd -i com.apple.ppp.pptp

    0  2765     1   0 11:20AM ??         0:00.00 vpnd -i com.apple.ppp.l2tp

 

うん、そうなるよね。

 

 

PC起動時に自動でvpndを起動してしまおうということで、VPNDというスクリプトを作成しました。

これをシステム環境設定→ユーザーとグループ→ログイン項目に追加しました。

 

これでPCを起動したときに自動でvpndが起動します。

毎回donateの広告が表示されるVPN Activatorなんて使わなくてもVPNサーバーを起動できます。

 

 

 

では、クライアント側から接続できるかチェックです。

iPhoneのVPN接続からMacBookProのグローバルIPとユーザー名とパスワード等を入力すると正常に接続されました。

 

ここでのユーザー名やパスワードはVPN Activatorで設定していたものでいけました。

これらの接続に必要な情報がどこに保存されているのかは色々調べてみましたが結局良くわかりませんでした。。。つまり、サーバーへ接続の為のユーザー名やパスワードを変更する際にはVPN Activatorを使用して変更しています。(ここだけ悔しい・・・。)

 

実際に私が使用しているスクリプトを公開致します。

ダウンロードしてお使いになる場合はスクリプトの4行目にある

 

pass=xxxxxx # input root password

 

 

をご自身のMacのrootパスワードに編集してからご使用下さい。

続きを読む 2 コメント

懐かしの秘蔵ビデオ。。。

続きを読む 0 コメント

auのiPhone4S (iOS 6.1) テザリング

iOS 6.1のjailbreakがきたー

続きを読む 0 コメント

Wake On LAN(WOL)について

iPhoneや他のPCから外部機器から自宅のWindowsPCをリモートで起動させてみる(WOL)

今回はiPhoneの無料アプリからMagicPacketを送信してPCを起動できたのでメモしておく

 

 

早速ですが、設定は色々あって結構面倒です。

 

①BIOSの設定

 →WOL機能の有効化。こちらを参考にさせて頂きました。

 

②OS側(Windows7)の設定

 →WOL機能の有効化。こちらを参考にさせて頂きました。


③ルーターの設定(ポートマッピング)

 →ブロードキャストアドレスからのマジックパケットを通す為の設定。こちらを参考にさせて頂きました。

  (ルーターによっては仕様でブロードキャストアドレスをポートマッピングに設定できないものもあるようです)

 

私の使ってるルーターは”Aterm BL900HW”で下記の設定でOKでした。

 

【ルーター側設定】

 ポートマッピング設定

   LAN側ホスト:192.168.0.255

          (255で終わるのはブロードキャストアドレスと呼ばれるもの。

          ローカルIPを192.168.0.xと設定している場合はこのようにする。)

   プロトコル:UDP

   Port番号:任意の数字 ※ただし、他の使用されているポート番号とかぶらないように注意。

 

 

④マジックパケットを送信〜PC起動

 →iPhoneからアプリを使ってマジックパケットを送信してみる。

  今回使用したアプリは " Mocha WOL " という無料アプリです。

  アプリの設定は下記のようにしました。

 

〜ローカルネットワークからWOLする場合〜

 Configure

   Server

      IP Address:192.168.0.1 ※1

      MAC Address:xx:xx:xx:xx:xx:xx ※2

      WOL Port:ルーターのポートマッピングで設定したPort番号

      Name:適当

   More

      Ping:ON

      WOL on LAN:ON

 

〜外部のネットワークからWOLする場合〜

 Configure

   Server

      IP Address:xxx.xxx.xxx.xxx ※3

      MAC Address:xx:xx:xx:xx:xx:xx ※4

      WOL Port:ルーターのポートマッピングで設定したPort番号

      Name:適当

   More

      Ping:ON

      WOL on LAN:OFF

 

※1 電源ONするPCのIPアドレス

※2 電源ONするPCのネットワークアダプタ(有線LAN)のMACアドレス

   いずれもwindowsのコマンドプロンプトより次のコマンドを実行することで確認できる

  「 ipconfig /all 」

※3 WAN側で持っているグローバルIPアドレス。ルーター設定から確認できる。ココからも確認できる。DDNSじゃないと定期的に変わってしまう。

※4 ※2と同じ

 

 

以上の流れでめでたくリモートで自宅のPCを起動することができました。

 

「Mocha RDP Lite」というアプリでも同様にマジックパケットの送信ができ、

さらに起動したPCをリモートデスクトップで表示することもできます。

リモートデスクトップでログインした場合、windowsのスタートメニューには

ログオフのみしか無くシャットダウンさせることができません。

でも大丈夫。シャットダウンさせるためのショートカットコマンドをあらかじめ

デスクトップに置いておけばリモートデスクトップでログインしていてもアイコンを

クリックするだけでPCをシャットダウンすることができます。

 

これでどこにいても自宅のPCの電源ON/OFFできるかな。

便利な時代だなー、ホント。

11 コメント

Macに外部ストレージを自動マウント (autofsdとかsmb)

MacBookで写真や音楽や映画を管理しているのですが、最近データが増えてきたので

外部のストレージ(LANディスクもどき)にライブラリを移動してしまおうと考えました。

ローカルディスクは300GB程と少ないので前々から何とかしようと思っていました。

 

HDDを圧迫しているのが主にiPhotoとiTunesです。

これらのローカルHDDに保存してあるライブラリを外部HDDに移動して

MacBookをダイエットします。

 

新たな保存先はローカルネットワーク上にあるHDDです。

(具体的にはauひかりで使用しているルーターに外付けHDDをUSB接続しています。

とりあえず、ここでは仮に”LANディスク”と呼ぶ事にします。)

 

MacからLANディスクに接続するにはsmb接続を行います。

今までは必要な時だけ接続する程度だったので、

Finderの「移動」→「サーバーへ接続」 から

「smb://IPアドレス」で接続していました。

 

当初PC起動時に自動マウントするように下記のように設定しておりました。

「システム環境設定」→「ユーザーとグループ」→ユーザーのログイン項目にマウントされたドライブを指定

 

普通に使っている分には全く問題無いのですが、ネットワークが切断されたり、LANディスクの電源をOFF

したりして一度マウントが解除されてしまうとその後再度自動でマウントはしてくれません。

なので、iPhotoやiTunesを実行した時にライブラリが見つからないといった状況に陥ってしまうことが予測されます。

 

これを回避する為には「ファイルアクセス時に自動マウント」を実現すれば良いのだと立ち上がりました。

とりあえずググってみるとautofsというのを使うと、nfsやsmbなどで自動マウントができそうなのでやってみた。

 

【編集するファイル】1〜3はスーパーユーザーで!

1. /etc/auto_master

 

↓下記の1行追加

/Users/my/disk     /etc/auto_smb

(マウントする場所)

 

2. /etc/auto_smb(任意のファイル名)

 

↓下記を追加

itunes  -fstype=smbfs ://username:password@server_address/disk/iTunes

iphoto  -fstype=smbfs ://username:password@server_address/disk/iPhoto

 

3. autofsdの再起動

 

↓Macではデーモンの起動は下記のように起動/停止されるそうらしい

launchctl stop com.apple.autofsd

launchctl start com.apple.autofsd

 

4. df -k でマウントを確認

Filesystem                                      1024-blocks      Used  Available Capacity  iused      ifree %iused  Mounted on

//username@server_address/disk/iTunes  1953030496 810653536 1142376960    42%        0 18446744073709551615    0%   /Users/my/disk/iTunes


//username@server_address/disk/iPhoto  1953030496 810653536 1142376960    42%        0 18446744073709551615    0%   /Users/my/disk/iPhoto

 

※マウントされない場合は暫く待つか、マウントしたデバイスにアクセスすると自動マウントされました。

 

 

以上でsmbでの自動マウント設定は終わり。

 

あとは、iTunesとiPhotoのライブラリを移動すればOK。

大分MacBookちゃんスリムになったかなー。

2 コメント

huluアカウントとAppleID

続きを読む 0 コメント

AppleTV3をもっと使ってみた

以前appleTVを購入してから暫く経ちました。

一言で言うと「素敵!」、英語で言うと「Nice!」

そして、Appleへ

「今までに無い新しいモノを作ってくれてありがとう!」

 

TVとだけあって、目玉は映像サービスでしょう。

 

現代ではネットでの映像配信サービスが主流となっており、

従来の店舗でのレンタルという時代が変わり始めています。

 

かつてアナログ帝国がディジタル帝国に占領されたが、

そこに今インターネットと言うビルディングが急速に

次々と建設されているこの時代に生きているのが私たち世代だ。

AppleTVはまさにそんな時代のニーズに合ったサービスを提供しているのではないだろうか。

 

多くの方が「appleTVって何?」という感じでしょう。

簡単に言うと、ネットワークを通じて自宅のテレビで

映画や音楽を楽しんだりYouTubeを観ることが出来ます。

 

「それって今のテレビ機能にあるじゃないか!」

「はい、あります。」

 

YouTube、TSUTAYAオンライン、アクトビラなどのサービスが私の自宅のテレビにもあります。

しかし、UIや操作方法がサービス毎に異なるし、アカウントの設定が面倒だったり、利用料金が高かったりと

使う気がしません。

 

一方、appleTVではUIが統一されており操作もシンプルです。(操作は基本的には付属のリモコンです。)

メリットがあればデメリットもあるのですが、とにかくその素晴らしい機能をご説明していきたいと思います。

続きを読む 0 コメント

布団選びに困ったらコレどう?(寝具セット・羽毛布団)

親戚が家に来るということで布団を探していました。

ネットで色々探しましたが、

羽毛布団って意外と値段が高いのですね!

 

羽毛布団で色々と探し、お値段とデザインを

トータル的に判断して↓この商品を選びました。 

 

色が20色から選べるのもいいですね♪

私は和タイプのモスグリーンを選びました^ ^

商品が届くのを楽しみにしてまーす♪

 

<PR>


続きを読む 0 コメント

iPhoneから自宅のFTPサーバへアクセスしてみた

ここあちゃんうちの子猫
ここあちゃんうちの子猫
続きを読む 0 コメント

iPhone4S(iOS 5.1.1) テザリング出来たので記録しておく

先日iOS5.1.1の脱獄が可能となったので早速やってみた。

 

まず、初めての脱獄ということで何かあったときの為にiTunesでiPhoneのバックアップを作成。

iOSを5.1から5.1.1へアップデート。

 

この時点で環境は下記の状態。

・iOSバージョン:5.1.1

・キャリアバージョン:KDDI 12.1

 

ココを参考にしてMac OS X ver.10.7.3の環境で実施しました。

注意事項さえきちんと確認しておけば比較的初心者でも簡単にできる内容でした。

 

脱獄が完了すると、iPhoneにcydiaが現れました。

ここからは、ネットで色々と情報を集めながら

SBSettings、Activator、MobileTerminal、iFile、RemoveBGなどを入れてみました。

 

次にテザリング機能を使えるように設定してみました。

ネットで検索するとSoftbankのiPhone4Sでの設定方法はHitするのですが、

auのiPhone4Sでの情報があまり無く、Softbankと同様のやり方で設定しようとしていたら

全く上手くいきませんでした。

こちらを参考にさせていただき設定することができました。

 

私の失敗例、

 編集すべきcarrier.plistのディレクトリを謝っていた

 →具体的には、

  /var/mobile/Library/Carrier Bundles/iPhone/KDDI_jp.bundle/carrier.plist (permission:mobile)

  を編集すべきところを

  /System/Library/Carrier Bundles/iPhone/KDDI_jp.bundle/carrier.plist (permission:root)

  を編集していました。

 

そのせいで、設定が反映されていなかったようです。

 

"type-mask"は4つ有り、最終的に上から 7、55、0、0に設定し

設定>一般>ネットワーク>インターネット共有が現れました。

 

iPhone4Sにてインターネット共有(テザリングON)にしiPodTouchからWi-Fi検索するとちゃんと出てきました。

また、Bluetooth経由のテザリングでもインターネット接続ができることを確認しました。

続きを読む 23 コメント

Music Beta by Googleを使ってみた

最近クラウドに関する情報を色々調べていていいのがあったので紹介します。

「Google Music beta」という米国向けクラウドサービスがあります。

音楽を2万曲までサーバーへ保存でき、webブラウザ上やアプリから音楽が再生できるという! Googleのアカウント登録が必要?

基本的には米国でしか使えないのですが、vpn接続で海外につなぎ登録すると

利用できるのです。

よーし、やってみよう!

 

ググったら色々出てくると思いますが、

まずvpn接続する為に中国の無料のvpnが利用できるサイトにいってみましたが、どうもvpnサーバーへの接続がうまくいきませんでした。

そこで、色々調べてるうちに「Hotspot Shield」っていうソフトを発見し、簡単にvpn接続することができました。

 

ここまできたら次に、Google Music Betaにいき「Request an Invtation」からメールアドレスなどを登録すると、2日後くらいに登録完了のメール来ました。(vpn接続が必要になるのはここまでです。)

 

返信メールのリンクから設定をすると、このサービスが使えるようになります。

ソフトのセットアップでiTuneのライブラリをサーバーにupロードするか選択できたので、ひとまずupしてみてPCのwebブラウザ上から再生してみたらちゃんと再生することができました。iOSのsafariから同じようにブラウザ上から再生してみようとしたけど、ブラウジングは出来るけど音楽ファイル選択すると、読み込み中の状態のままで再生されませんでした。

まぁもうちょっと考えてみよーっと!

続きを読む 7 コメント

c言語の勉強 2回目

こんにちは。

昨日衛星はどこに落ちたのかしら?北米とか言ってるみたいだけど真相は?

衛星の軌跡を見たけど、2時間くらいで地球一周してるんだから

墜落したときの衝撃ってすごいんじゃないの?とか思っていました。

まぁ、僕の頭には落ちてこなかったのでよかったです。


さて、2回目のプログラミングのお勉強です。


***********************************************************************************************************

 

[Lesson4] ファイルを読み込んで出力してみよう

------------------ stady_file_read.c --------------------------------------------------------------

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[]){

        FILE *fp;

        int birthday;

        char name[256];



        if ( argc < 2 ){

                printf("(usage) : stady_file_read.exe [filename]\n");

                exit(1);

        }



        if((fp = fopen(argv[1],"r")) == NULL){

                printf("file read error!!!\n");

               exit(0);

        }



        while((fscanf(fp,"%s %d",name,&birthday)) != EOF ) {               

printf("name:%s birthday:%d\n",name,birthday);

        }



        fclose(fp);

        return 0;

}



 

 --------------------------------------------------------------------------------------------------------

【実行】

./stady_file_read.exe data

name:hiroyuki birthday:19840124

name:izumi birthday:19840628

name:ui birthday:20081028

----------------------------------------------------------------------------------------------------------

 

ファイルの読み込みにはファイルポインタを使います。

ファイルポインタは下記のように定義します。

(fpとしていますが任意の変数でOKです)

 

  FILE *fp;

 

ファイルを開くにはfopen関数を使います。

 

  fp = fopen(”ファイル名”,"r")

 

今回はファイル名をargv[1]としてコマンドの引数をファイル名としました。

もちろん、fopen(”data”,"r")と指定してもOKです。

 

fopenの2つ目のオプションは下記のように覚えておきましょうか。

読み込むファイルは"r"

書き込むファイルは"w"

 

次にfscanf関数でファイルを1行読み込みます。

 

fscanf(fp,"%s %d",name,&birthday)

 

fpで指定したファイルの1カラム目の”hiroyuki”をchar型の変数(name)、2カラム目の”19840124”をint型の変数(birthday)に代入します。

 

そして、printfでこれらの変数を出力します。

 

  printf("name:%s birthday:%d\n",name,birthday);

 

whileを使ってファイルの終わり(EOF)がくるまで処理を繰り返します。

 

fopenしたら最後には必ずfcloseするように心がけましょう。



これだけでは何も面白くもないですが、

僕はデータの処理/解析などでこれらを活用してまーす。

続きを読む 0 コメント

c言語の勉強 1回目

こんばんは。

プログラミングほぼ初心者君です。

サクサクプログラムを作れる人に憧れています。

大学で勉強したけど、ちんぷんかんぷんで理解不能でした。

そして、今になって勉強を始めようかと思いまして。

今でも基礎が理解できないけど。

 

ということで、早速基礎からお勉強です。

参考書とか見ると難しい説明が長くて良くわからないので

まずは深く考えずに実践しながら覚えて行こうとか思います。

 

ちなみに、MACBookにはDefaultではコンパイラが入っていないから

”Xcode”っていう開発ツールをインストールしてます。

 

また、あえてブログに書いたのは学んだことを忘れないようにと

個人用に記録したかったからです。

ブログを見ている人にレクチャーする目的ではありませんので悪しからず。。。

どう考えてもgoogleで調べた方が正しい事が書いていますのでw

 

***********************************************************************************************************

 

[Lesson1] とりあえず何かをを表示してみよう

------------------ stady_printf.c ------------------------------------------------------------------

#include<stdio.h>
int main(){
        int x;
        x=123;


        printf("Hello! My name is Hiroyuki.\n");

        printf("%d\n",x);
        return 0;

}

 --------------------------------------------------------------------------------------------------------

【実行】

./stady_printf.exe

Hello! My name is Hiroyuki. ←出力結果

123 ←出力結果

----------------------------------------------------------------------------------------------------------

 

でたぁ!

これは、簡単ですね。

単純に文字を出力したのと、

xという変数をint型で定義して、123という数字をxに代入、変数xを出力する。

変数xはint型で定義しているので、出力形式は整数型の”%d”にする。

最後は戻り値を0を返す。

int型は主に整数だけど、小数を扱う場合にはdouble型ってのを使います。

他にも色々あるけど、ググッてね。

 

**********************************************************************************************************

 

[Lesson2] 値を読み込んでみましょう

------------------ stady_scanf.c ------------------------------------------------------------------

#include<stdio.h>
int main(){


        int x;

 

        printf("input=");

        scanf("%d",&x);

 

        printf("\n");

        printf("output=%d\n",x);

 

        return 0;

}

-----------------------------------------------------------------------------------------------------------

【実行】

./stady_scanf.exe

input= ←キーボードで適当な整数を入力する。

     ここでは”999”と入れてみました。

output=999

-----------------------------------------------------------------------------------------------------------

 

おk!

ちなみに、”1.9”という小数値を入力すると”1”が返ってきました。

また、”ABC”と入力すると”0”が返ってきました。

入出力の型によって、変数の定義を変えなくてはいけませんね。

 

 

***********************************************************************************************************

 

[Lesson3] 足し算/引き算/掛け算/割り算

------------------ stady_calc_1.c -----------------------------------------------------------------

#include<stdio.h>
int main(){


        double x,y;

 

        printf("x=");

        scanf("%lf",&x);
        printf("y=");

        scanf("%lf",&y);


        printf("\n");

 

        printf("addition=%.2lf\n",x + y);

        printf("subtraction=%.3lf\n",x - y);

        printf("multiplication=%.4lf\n",x * y);

        printf("division=%lf\n",x / y);
        return 0;

}

----------------------------------------------------------------------------------------------------------

【実行】

./stady_calc_1.exe

x= ←入力。

y= ←入力。

     ここではxに”1”、yに”10”と入れてみました。

addition=11.00

subtraction=-9.000

multiplication=10.0000

division=0.100000

----------------------------------------------------------------------------------------------------------

 

計算の基本はこれだけです!

複雑な計算も「足し算/引き算/掛け算/割り算」の集まりですね。

割り算の余りを計算する”%”というのもあるそうですが

私は今のところ使うことはなさそうです。

今回は割り算も使ったので変数はdouble型で定義しました。

printfでの出力データの変換形式は”%lf”とすることで浮動小数点型で出力されます。

小数点第2位までの表示にするには、"%.2lf" or ”%0.2lf”とすればよいと思います。

 

**********************************************************************************************************

 

今日はここまで。

 

今回使用した関数のおさらい。

1.printf

2.scanf

 

まだ基礎のほんの一部ですね。

はぁ、基礎を身につけるまでが大変ですね。

まぁのんびりとお勉強していきますかー。

 

続きを読む 2 コメント