SQLの窓

2014年12月12日

プログラマの『たまご達』、頑張れっ。

本格的な冬の到来と供に、Google+ のコミュニティの『教えて!? プログラミング』で、沢山の初心者らしきメンバーが増えて来ました。やはり、寒い時にこそ『プログラマのたまご』はこたつに入って巣立ちの準備を始めるものなんでしょうか。

で、また長文を一つ書いてしまいました。われながらもったいないのでまた転載です。

----------------------------------------------------------------------
>iPhone系でプログラミングできたらいいなーと思ってはいる
あなたの現状で純正アプリは無理です。WEBアプリでごまかす方法ならば、PHP+JavaScript( と言うより jQuery ) で可能です。

C言語はプログラマとしてのスキルアップになりますが、楽しく無いです。

C++は、プロ用の言語です。無視して下さい。

C# は VisualStudio の中で一番おすすめではあります。VB は、明らかに Microsoft がやめたがっています。

それと、一口に C# と言っても、コマンドプロンプト系、FORM アプリ系、ストアアプリ系(XAML 画面)、WindowsPhone(XAML 画面/Microsoftもなにもできていないのでやめたほうがいい)

・・とかあるので勉強するなら、コマンドプロンプトからですが、やはりあまり面白くはありません。

ASP.NET の WEB 系は話が長くなるのですが、やめたほうがいいです。一度しか無い人生の時間を無駄に使いすぎる可能性があります。

Java は、Android の ADT をダウンロードして日本語化してすぐ使えるので環境としてはめぐまれており、Android アプリも簡単なものならすぐ作れて書籍もいいのが多いのでちょっとお勧めです。

しかし、マジでいろいろやろうとすると Java は必ず途方に暮れる事になるので、スーパーな先駆者が近くに居る場合にのめりこんだらいいでしょう。さらに、ここで頑張れば、プロになった時に若干お得です。将来は解りませんが・・・

JavaScript は言語の中でもっとも難しいものです。フレームワークがなければ何も作れません。ですが、Windows のストアアプリが JavaScript で作れたり、jQuery を扱えれば、結構な事ができるので楽しむにはもってこいでしょう。ですが、これだけでは飯は食えませんねまだ。

ActionScript は、Flash の衰退で意味なくなる可能性もあるのでスルー。

PHP は、そもそも標準入出力の世界で生まれた Perl と Microsoft が作った ASP という二つの金字塔を元に WEB に特化して、時代と供に進化して来たもので、言語と言うより WEB 用のフレームワークです。大勢での開発には向いておらず、個人の開発では重宝されますが一長一短なのは当たり前です。

python は、数年前に授業で少し学生にやらせましたが、全員沈没しました。とにかく日本語の情報が殆ど無かったですし、超上級者が好んで使う優れたものですが当然初心者には荷が重いです。

Ruby にしても、速度的なものや完全なドキュメントというものが少なく殆どが撃沈しています。プロが他の経験を生かして適材適所で用いるには良いものになりつつあるとは思います。

で。

Windows 限定でその中で動かすなら環境と情報量で言えば、C# と Java です。WEB系は、ブラウザが高機能になって来たので PHP + JavaScript(jQuery) が簡単で情報量と質がとんでも無く安定している上に、日々進化しています。来年は違う事ができている可能性があります。( 今でも 3D ゲーム作れます )

また、自分は人と違うものをやっているという先端感を味わいたいのならば、もっとマイナーなものがたくさんあると思います。
----------------------------------------------------------------------

正直言って、『プログラミング』は難しいものです。趣味でやるにしたら、やはりより楽しいものを選ぶべきですし、プロを目指すにしても、優先順位は存在します。

ですが、一ついえる事は『もう絶対に WEB はなくならない』という事実です。おのずと何を押さえておけばいいかという方向性の一つのヒントとなります。皆が思うほど時間はたくさんありません。何故なら、常にプラットホームのほうが進化しつづけるのに対して、プログラマはそれほど進化できるものでは無いのです。

どんなに熟練したプロでも、『専門』という範囲を外れてしまうと、また追いつくのに時間がかかります。だから時間は少ししか無いと思って、できる限り『人脈』作るのもとっても必要です。


※ 追記(あるある)
やはり、たまごの殻は根拠の無いプライドでできているようだ。



posted by at 2014-12-12 20:52 | Comment(0) | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2014年04月27日

言語別文字列 Split

内容的にはたいしたものではありませんが、run code 使って実際に実行できるので、結構悪く無いドキュメントになるかもしれません。一つの言語だと、記事にする事自体無理なんですが、このノリは結構将来性あるものだと感じます。

PHP

run code
<?php
//Title of this code

    $a = explode(" ", "Hello world!" );
    foreach( $a as $value ) {
        print "{$value}\n";
    }
    
?>

Java

run code
//Title of this code
//'main' method must be in a class 'Rextester'.

import java.util.*;
import java.lang.*;

class Rextester
{  
    public static void main(String args[])
    {
        
        String[] a = "Hello world!".split( " " );

        for(String value : a){
              System.out.println(value);
        }                       
    }
}

JavaScript

run code
//Title of this code

var a = "Hello world!".split(" ");

a.forEach(
    function(value) {
        print(value);
    }
);


C#

run code
//Title of this code
//Rextester.Program.Main is the entry point for your code. Don't change it.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            
            Char[] delimiter = " ".ToCharArray();
            String[] a = "Hello world!".Split( delimiter );

            foreach(String value in a){
                  Console.WriteLine(value);
            }               
        }
    }
}



タグ:C# javascript java PHP
posted by at 2014-04-27 03:08 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2013年06月10日

専門ガッコの授業で、Win8 と Windows Phone と Android と PHP を同時進行しています。

Win8、Windows Phone、Android はいずれも大きな一般的データーベースに対するアクセス方法を持ちません。Windows Phone、Android はスマホだから当然ですが、Win8 も、将来を見据えてそういうのは Framework にありません。よって、データーベース部分は PHP に任せるのが簡単です。

課題として求める機能が、
1) 画面遷移
2) Http による GET 読み出し
3) Http による POST 更新処理
4) ListView(または Box)による一覧処理
5) データのインターフェイスはとりあえず XML( 後期に JSON )
6) 更新時の選択応答

ですが、以下で全て網羅されているはずです。

※ PHP の更新 API 部分はこちらが作成します

Win8 ストアアプリWin8 ストアアプリの、メモリ上にページを残す画面遷移と、前画面のコントロールの参照Windows8(C#) ストアアプリ : 複数画面を同時にメモリ上に置く画面間移動処理Windows8(C#) ストアアプリ : HttpClient で Get と Post する簡易クラスWin8 ストアアプリで、『選択肢を応答するダイアログ』を簡単に使うための MessageBox クラスWin8 ストア : リストボックス テンプレートWin8 ストア : UrlEncode と UrlDecode


Windows Phone課題用テンプレートListBox テンプレートWindows Phone から Post 投稿 と Get 読み出しWindows Phone の MessageBox


Android

Android 4.2.2 ADT : シンプルな ListView セット
Android から Post 投稿 / HttpPostAndXml extends AsyncTask
Android ADT の AlertDialog を使いやすく / MessageBox クラス
Android 4.2.2 : インターネット上の画像の表示 / AsyncTask


PHP

PHP + cURL で、Twitter API 1.1 の search/tweets を呼び出して、RSS に変換する
Twitter アプリを登録して、バッチファイルで投稿 - NAVER まとめ



posted by at 2013-06-10 23:16 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2013年06月05日

abstract class BtnClick implements OnClickListener

Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
	public void onClick(View v) {
	}
});
と、いうふうに書くのはいいかげん面倒になって来たので、abstract class BtnClick implements OnClickListener というクラスを作って
package com.example.click;

import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;

public abstract class BtnClick implements OnClickListener {

	private Activity _act;
	private int _id;
	public BtnClick(Activity act,int id) {
		this._act = act;
		this._id = id;
		click();
	}
	
	public void click() {
		this._act.findViewById(_id).setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO 自動生成されたメソッド・スタブ
				BtnClick.this.onClick(v);
			}
		});
	}

}

以下のように呼び出してみましたが、なんか問題ありますでしょうか。
package com.example.click;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        new BtnClick(this,R.id.button1){

			@Override
			public void onClick(View v) {
				Log.i("","ボタンイベント");
				
			}

        };
    }
}

というか、レイアウトの ボタンの onClick プロパティにイベント名をセットしたほうがもっと早いですけれど。
package com.example.click;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    
	public void clickEvent(View v) {
		Log.i("","ボタンイベント");
	}
    
}


    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:onClick="clickEvent"
        android:text="Button" />


posted by at 2013-06-05 23:08 | プログラマ用 | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します


Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX