ヒビノカテ: 2.プログラムアーカイブ

2.プログラムの最近のブログ記事

○カヤック、ブラウザ上でHTML5コンテンツを生成・共有できる「jsdo.it」 :ベンチャーニュース:Venture Now(ベンチャーナウ)
http://www.venturenow.jp/news/2010/06/18/2245_008453.html
○【レビュー】マウス操作だけでCSS3対応ボタンを自在に作成! その名も"Button Maker" | エンタープライズ | マイコミジャーナル
http://journal.mycom.co.jp/articles/2010/06/15/buttonmaker/?rt=na
○セール&クーポンサーチ Webサービス:BentoBox(TM):みんなで使えるツール・アプリを、みんながつくってシェアするアフィリエイトツール開発・共有プロジェクト
http://www.bento-box.jp/lsapi/salecoupon/
○爆速 Twitter アプリをつくる | エントリー | _level0.KAYAC
http://level0.kayac.com/2010/06/_twitter.php
○ASCII.jp:PHP on Windowsで速攻Web開発を実現|マイクロソフトのWeb開発が「しょぼサイト」を救う
http://ascii.jp/elem/000/000/529/529430/
○PHP/MySQLの開発環境をXAMPPで簡単にインストールする方法! - 裏技shop DD
http://shopdd.blog51.fc2.com/blog-entry-941.html
○PHPで誕生日などの日付けのチェックをする 日付の妥当性チェック関数 忘却のWEBプログラマー人生辞書
http://lmaker.blog17.fc2.com/blog-entry-193.html
○PHP関数をJavascriptで実現しちゃう「php.js」Priereluna | Priereluna
http://blog.priereluna.net/?p=85
○クッキー無効の携帯でsubmitするとセッションが切れます - PHPプロ!Q&A掲示板
http://www.phppro.jp/qa/2771
○PHPで書かれた次世代のショッピングカートシステム「TomatoCart」:phpspot開発日誌
http://phpspot.org/blog/archives/2010/06/phptomatocart.html
○PHP-ExcelReader:CSVファイルではなく、Excelファイルでサイト・データベースへの一括登録を。でも結局うまくゆかなかったんだけど ・・・ 【ユーザビリティ】 サイト構築,創る,WEB,ホームページ制作,サイト制作,WEBプログラミング - 創るmetaboy
http://metaboy.blog23.fc2.com/blog-entry-1349.html
こうやっておくと仕事中にドウドウとmixiが見れるという算段ですぜ。。。
アニキィ。。。

objective-cの感想

| コメント(0) | トラックバック(0)

今日iPhoneアプリの入門セミナーを聞いてきた。
必然的にobjective-cのソースコードに触れることになりました。
objective-cのソースコードを初めて見た。

(お願い:以下、acxの私見です。間違いや意見はこっそりacxさんが傷つかな程度にコメントしてください。)

objective-cとは
・C言語ををベースにした、オブジェクト指向言語
・Cのライブラリが使える
・C++とは体系が異なる
・SmallTalkに強い影響を受ける
・主にAppleのプラットフォーム上で使われている。
・Steve Jobsが経営していたNeXT社が作った言語
・iPhoneの開発は、主にobjective-cで作成。

というのが、objective-cの特徴です。

ソースコードを見た感じは、
C言語の手続きの煩雑さとオブジェクト指向の融通の聞かなさをあわせ持った感じ。
あわせてメソッドの呼び出し方や引数の渡し方が独特。
ステートメントが長くなるキライがある。
メモリの管理をプログラマがするから面倒。
メモリの確保が固定長と可変長のタイプのメソッドと対になっている。
(たしかにメリッドがあるけど、Stringぐらいは一つにまとめられなかったのかな?)
ついでにメソッドの名前に自社の名前をつけている。。。
そんな言語をAppleはiPhoneアプリ作成にこのobjective-cを強要するわけだよね?

セミナーを聞いていて、ムカムカしながらソースを眺めていました。

初めてobjective-cのソースコードを見たから、
objective-cの良さとか開発効率などまったく知らないボクが
無責任に初見を書きましたが、、、面白そうな言語のような気がする。

同じ勉強をするのならば、オブジェクト指向言語の始祖である、Smalltalkを勉強した方がメリットがありそうな気がするのだけど、、、一見欠点の多いobjective-cの方が魅力を感じてしまうのはiPhoneアプリ作成に指定されている言語だからというだけではないような気がします。

C言語の流れをどれほど受け継いでるのかとか?
すべてオブジェクトで制御できるのか?
どれだけ省略してコーディングできかとか?
縛りがキツそうだけど理にかなっているのかとか?

文句をツラツラ書いたけど、objective-cは魅力を感じる言語ではあります。
なんで魅力を感じるのか知りたいからしばらくしたらobjective-cを勉強してみたいな。

でも、、、なんか勉強するのに結構お金が結構かかりそうな気がするOTZ

Technorati タグ: ,,

中二病患者が好きそうなタイトルを自動で作成するエクセル関数を作ってみます。
(注:中二病とは主に中学二年生あたりが罹るという妄想病。こじらせるとイロイロと痛いことになる)
具体的に作成する関数は、中二病患者が好きそうな二字熟語をA列に列挙する。
その列挙した熟語からランダムに一つの熟語を取り出す関数を作成する。その関数を二つ繋げて四字熟語にする。
すると、運が良ければ中二病患者が好きそうな文字列が作成できるかもしれない。。。

24011409_2684105606

1.A列に二字熟語を入ていく(今回は200個程を入れる)
2.B列に関数を入れる
=INDIRECT("A"&ROUNDUP(RAND()*COUNTA(A:A),0))

・INDIRECTは本来なら文字列として入力されているデータを計算式の中で使える「セルのアドレス」に変換してくれ関数を使用する。
・A列の何行目かにある内容を取り出す文字列を考える=>"A" & ~~~とする。
・COUNTA(A:A)はA列に文字があればカウントする
・RANDは0以上で1より小さい乱数を発生させる。
・ROUNDUP(RAND()*COUNTA(A:A)とすると0からA列にある熟語の個数未満までのランダムな数字を取り出す。
・ランダムに取り出した数字は少数なので切り上げて整数にするためにROUNDUP関数で少数第一位を切り上げる。
・作成した関数を二つ繋げ四字熟語にする。

---
契約連鎖、光輪天空、顕現霜月、螺旋喧嘩、浮島修羅、時間唯一、工芸喪失、金剛修羅、空虚麒麟、竜王邂逅、遺跡天賦、線路猛士、失恋神話、金剛弥生、奇矯魔弾、時間拒絶、輝石闘将、不死霜月、奇矯金剛、懸命軌跡、天王白虎、顕現細工、顕現魔弾、如月土中、泡沫物語、流々懸命、綺麗剣士、足跡墓標、喧嘩爛々、体系文庫、妖怪世界、花月細波、皐月軌跡、組織砂漠、羅刹邂逅、予兆崩壊、玄武魔法、回廊傷跡、南北玄武、物語愛憎、地下悔悟、光輪傷跡、薬物葬送、暗黒羅刹、放送屠殺、線路一緒、麒麟足跡、防御時計、拒絶水鏡、喧騒線路、竜王術師、荒廃細波、夜叉録音、星座師走、迷彩雷鳴、書物失踪、体系荒廃、喧騒猛士、喧嘩胎動、宣告想出、南北文月、連携境界、楼上継承、軌跡失恋、流々砂漠、屠龍封印、占術光景、血痕変身、胎動体系、階段拒絶、玉石天賦、闘将細工、破片南北、雨音継承、修羅玄武、失踪星屑、皐月天賦、境界刻印、共鳴爛々、翠鳥悪夢、卯月足枷、土中血痕、爛々睦月、予兆破片、怪物東西、墓標光輪、異国静寂、継承水鏡、後継刻印、病魔境界、悪夢長月、遺跡胎動、花月愛憎、彼方人形、咎人仮初、迷彩喪失、録音録音、連携旋盤、足枷愛憎、聖域機械、封印地図、星座刻印、葬送土中、共鳴迷路、灯台悪夢、連携拒絶、消失相棒、足跡綺麗、夜叉地下、録音占術、攻撃物語、金剛失恋、屠殺世界、夜叉懸命、機械主従、契約奇矯、武装浮島、剣士光景、流水相棒、足枷細波、青龍怪物、射手弥生、右手流々、剣士物語、転送喧嘩、地下朱雀、足枷弥生、足跡占術、月光都市、天空道標、花月葬送、刹那階段、異国歌姫、世紀砂漠、拒絶睦月、猛士磁石、相棒舞姫、魔弾砂漠、東西闘将、時計細波、暗闇舞姫、皐月荒廃、暗黒伝説、愛憎追憶、玄武右手、運命追憶、保障玄武、仮初左眼、迷路猛士、共鳴胎動、泡沫朱雀、風鳥綺麗、皐月葉月、文庫楼上、金剛白虎、闘将愛憎、拒絶禁忌、鮮血保障、剣士印刷、砂漠世界、翠鳥皐月、右手工芸、皐月刹那、機械如月、復讐楼上、
----

意味的や日本語的におかしいモノはあるけど、ま昼寝しながら考えたことだし。。。(言い訳)
もう一つ、重複することもあるけど、、、これも味だと思って生暖かい目で見てやって下さい。

A列とB列を使って前と後の熟語にするという手もあります。(A列一列だけでも100文字以降は後ろにする熟語として使用するように分ける)
後ろにに"之時"とかのような後ろにした方が良い熟語にするという手もあります。

あと、この関数の使い方としては中二病的な小説とか物語のプロット作成に使うとか?つかえるような気がする。
たまには想像のツバサを広げて見るのも良いかと思います!
ただし、広げすぎて帰ってこれないと。。。エ~大変な事になりますけど!!!

p.s. 注意:ボクは中二病患者ではありません!

[使った関数]
書式 :INDIRECT(参照文字列 , 参照形式)
機能 :指定される文字列への参照を返します
解説 :参照するセル範囲を変更します。

書式 :RAND()
機能 :0 以上で 1 より小さい乱数を発生させます。
解説 :aとbの範囲で乱数を発生させるには、次の数式を使います。RAND()*(b-a)+a
1から100を表示させたいときはRAND()*100とする。

書式 :COUNTA(値1, 値2, ...)
機能 :空白文字列 ("") を含め、すべてのデータ型の値をカウントする。ただし、空白セルだけは計算の対象となりません。

書式 :ROUNDUP(数値, 桁数)
機能 :数値の切り上げを行う。桁数に正の数を指定すると、数値 は小数点の右 (小数点以下) の指定した桁に切り上げられます。
桁数 に 0(ゼロ) を指定するか、または省略すると、数値 は最も近い整数に切り上げられます。
桁数 に負の数を指定すると、数値 は小数点の左 (整数部分) の指定した桁に切り上げられます。

PHPで文字列を一文字づつ分解して表示する必要があったので関数を作ってみました。PHP5では文字列を擬似的に配列として扱うことができるのですが、PHP4では文字列を擬似的な配列として扱うことができないようです。

もう、PHP4はサポート外ですが必要になる可能性もあるのでここに記しておきます。

 

<?php

$str = "This is a test.";

//PHP5の場合は文字列を配列として扱うことができる
function split_5($str){
	$array = array();
	//count($str)だと1が帰らされるので、strlen($str)を使用する
	for($i=0;$i<strlen($str);$i++){
		$c = $str[$i];
		array_push($array,$c);
	}
	return $array;
}

//PHP4の場合の場合は文字列を配列として扱うことができないので一文字づつsubstrで分解して使用する
function split_4($str){
	$array = array();
	for($i=0;$i<strlen($str);$i++){
		$c = substr($str,$i,1);
		array_push($array,$c );
	}
	return $array;
}


var_dump(split_5($str));
var_dump(split_4($str));

//結果 split_5 または split_4
//array(15) {
//			[0]=>  string(1) "T" 
//			[1]=>  string(1) "h" 
//			[2]=>  string(1) "i" 
//			[3]=>  string(1) "s" 
//			[4]=>  string(1) " " 
//			[5]=>  string(1) "i" 
//			[6]=>  string(1) "s" 
//			[7]=>  string(1) " " 
//			[8]=>  string(1) "a" 
//			[9]=>  string(1) " " 
//			[10]=>  string(1) "t" 
//			[11]=>  string(1) "e" 
//			[12]=>  string(1) "s" 
//			[13]=>  string(1) "t" 
//			[14]=>  string(1) "." 
//	}


?>
Technorati タグ: ,,

javaでAjaxを使用すると文字コードをUTF-8にすべてのソースをあわせないと文字化けがおきます。
jspはUTF-8で動かすのはしょうがないとしても、その裏で動くservletやデータベースの文字コードを変えないでjavaでAjaxを再現する方法です。

Ajaxは文字コードUTF-8で作成。
Java側はwindows-31Jで作成。

jspでAjaxを動く仕掛けがあります。
そのため、jspの文字コードをUTF-8で作成しないと動きません。

○jsp(UTF-8)→servlet(windows-31J)でデータを送った場合。
文字化けを起こします

○servlet(windows-31J)→jsp(UTF-8)でデータを送った場合。
文字化けを起こさない。

以上のことからjsp→servletとデータを送る間ににservletの機能のfilterを使用して文字コードUTF-8に変換して文字化けを直しました。

[コード]
package filter;
import java.io.*;
import javax.servlet.*; 

public class EncodingFilter implements Filter {
  public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
    throws IOException, ServletException {
    // エンコーディング指定
    req.setCharacterEncoding("UTF-8");
    System.out.println("Filter:" + req.getParameter("test")); 

    // 元々要求されていたリソースを呼び出します
    chain.doFilter(req, res);
  }
  public void init(FilterConfig config) throws ServletException {
  }
  public void destroy() {
  }
} 

--- 

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
 <filter>
  <filter-name>filter1</filter-name>
  <filter-class>filter.EncodingFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>filter1</filter-name>
  <url-pattern>/data</url-pattern>
 </filter-mapping>
 <servlet>
  <servlet-name>servlet</servlet-name>
  <servlet-class>servlet.Data</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>servlet</servlet-name>
  <url-pattern>/data</url-pattern>
 </servlet-mapping>
</web-app> 

[用語]
フィルタとは?
Java Servlet API2.3から導入された新機能で、
クライアントからの要求になんらかの処理をしてサーブレット、
JSPまたはその他のリソースにその要求を渡す機能のこと。

[参考にしたサイト]
【Java & Ajax】UTF-8 でない HTML での Ajax 通信方式
http://yashawks.seesaa.net/article/31369773.html

サーブレット(フィルタ)編
http://www.hellohiro.com/filter.htm

データベース操作したり、管理するシステムするソフトウェア群をでーたベース管理システム(DBMS)と呼びます。
データベース管理システムの役割にはつぎのようなモノがあります。

1.データベースの定義(DDL:Data Definition Language)
 データベースのスキーマを定義します。
2.データベースの操作(DML:Data Manipulation Language)
 データの追加や変更、呼び出しなどの操作を行います。
3.データベースの制御(DCL:Data Control Language)
 データベースの情報の機密保護、アクセス権限の設定、障害が発生したときの対処などを行います。

こうした定義は、データベース言語を用いて行われます。関係データベース(リレーショナルデータベース)では"SQL言語"を用いてデータベースを操作します。

ちなみにSQLは、(エスキューエル、シークェル )と読まれます。これは、SQLの元となったデータベース言語が、IBM社が開発したRDBMSの実験実装である System R の操作言語「SEQUEL (Structured English Query Language)」であったことが由来しています。
そのような経緯からSQL自体は略語ではありません。
リレーショナルデータベースは複数のテーブルから識別できるキー同士を結びつけてデータベースの集計・演算をするデータベースモデルのことを言います。

なんとなくjavaScriptを書いているのはまずいだろうと思いゴールデンウィーク中はjavaScriptとAjaxの基礎を勉強していました。

javaScriptはクロージャとカリー関数が出てきたところで小休止。
Ajaxは通信の基本プログラムを5本書き、Prototype.jsのサンプルを一つ書いたところです。

おかげで無名関数の扱いに違和感を感じなくなりjavaScriptのコードが抵抗なく読めるようになりました。
そんなおりgoogle Analyticsで外部リンクへのクリック数をカウントしたいという要望が仕事でありました。

Flash イベントをトラッキングするにはどうすればよいですか。 - アドワーズ 広告 ヘルプ
http://adwords.google.com/support/bin/answer.py?hl=jp&answer=55520

記事はflashでのイベントのカウントの取り方が書いてありますが。これをaタグに応用するとカウントができるようです。

例):
<html>
<head>
<title><title>
</head>

<!-- コードの記載 始まり-->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>

<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-xxxxxx-x");
pageTracker._trackPageview();
</script>
<!-- コードの記載 終わり-->
<body>


<a href="http://xxxxx.com" onClick="javascript:pageTracker._trackPageview('xxxx');">xxxxx.com</a>

↑こんな感じで記載します。
._trackPageviewの引数は任意の文字列で良いみたいなので集計しやすい階層的な文字列を作成すればよいかと思います。

そしてAjaxのことも書こうかとおもったけど。。。気力がなくなりました。後ほど気力が回復した(書けたら)書こうかと思います。

技術系のメールマガジンでこんな問題が出てきました。

Q:浮動小数点形式で表現された数値の丸め誤差とは?
A:数表現のけた数に限度があるので、最下位けたより小さい部分について四捨五入や切上げ、切捨てを行うことによって生じる誤差である。

PHPのプログラムを書きながら、PHPの配列の要素に少数を入れるとどうなるか、ちょっと疑問になって調べて見ました。

Q:PHPで$test[0.69]のように配列の要素に小数点を入れるとどうなるでしょう?
A:浮動小数点数値を指定すると、 その値はintegerに切り詰められます。

---
PHP: 配列 - Manual
http://php.benscom.com/manual/ja/language.types.array.php

key は、整数 または 文字列です
あるキーが、整数の標準的な表現形式である場合、 そのように解釈されます
(つまり、"8" は 8 として解釈されます。一方、 "08" は "08" として解釈されます)。
key に浮動小数点数値を指定すると、 その値は integer に切り詰められます。
PHP においては添字配列と連想配列の間に違いはなく、配列型は 1 つだけで、
整数または文字列のインデックスを使用することができます。

---

これを知っているからと何かに利用できるかと言われれば、かなり???です。
このことをプログラミングに何かで利用してもそれはトリッキーなプログラムになるのでお勧めできないです。
でも、何かに利用できないかなと考えるのは楽しい作業だと思うので利用例を思いついたら紹介します。

EXCELのセルに貼り付けたハイパーリンクのデータからURL情報だけを抜き出す方法です。
今回はマクロを使用しています。

[説明]
A列にハイパーリンク設定済み文字列を入力してください。
B列に取り出したURLを表示します。
*マクロを実行するとやり直しができなたいためコピーなどして、バックアップ対策を完全にすること。

[マクロの設定]
1.[Alt]+[F11] で VBEditor を起動。
2.VBAProject(xxxx)に[挿入]-[標準モジュール] で標準モジュールを作成。
(xxxx の部分は開いたブックの名前)
3.標準モジュールに下記コードを入力。

Sub urlShow()
    'カウンタ変数を設定
    Dim I As Integer
    '1000行までのハイパーリンクの設定を確認
    For I = 1 To 1000
        'A列の当該セルが空白の時はループ終わり
        If Cells(I, 1).Value = "" Then
            Exit For
        End If
        'B列のハイパーリンクが設定されている同じ行をアクティプセルにする
        Cells(I, 2).Select
        'A列の当該セルにハインパーリンクが設定されている場合
        If Cells(I, 1).Hyperlinks.Count > 0 Then
            'A列の当該セルにハイパーリンクのURLをアクティプセルに代入
            Selection.Value = Cells(I, 1).Hyperlinks(1).Address
        End If
    Next I
End Sub

4.[Alt]+[F8] でマクロ実行のダイアログを表示。
5.[xxxx!urlShow](xxxx の部分はマクロを書いたブックの名前)を選択して
6.[実行] をクリック

*アクティブセルから下の行というマクロにしようとおもったのですが、今回は使いっきりのプログラムの性格が強いのであまり汎用性を持たせていません。

MySQLなどでカタカナのソートを書けるときに濁点や半濁点があると思った通りのソートがかけられないことがあります。対処法としてはデータベースに一項目濁点と半濁点を抜いた文字列を格納するか、データベースから取り出してからカタガナのソートをプログラムで処理するかです。

前者の方が手間と時間がかからいのでお勧めですが、状況によってはプログラムの処理をする場合もあるかと思います。

データベースに格納する前段階として、データベースから取り出してフリガナのデータを処理するにして以下のプログラムは使えると思います。

[PHP]
$temp = "ドウカナ"
$temp = mb_convert_kana($temp,"k"); //半角カタカナにする
$temp = mb_ereg_replace("゙|゚","",$temp); //半角カタカナにすると濁点や半濁点が一時になるので消去
$temp = mb_convert_kana($temp,"K"); //全角カタカナにする

*半角カタカナにすると濁点と半濁点が一つの文字として分離する点がキーとなっています。

2011年9月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

このアーカイブについて

このページには、過去に書かれたブログ記事のうち2.プログラムカテゴリに属しているものが含まれています。

前のカテゴリは1.コンピュータです。

次のカテゴリは3.TIPSです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。