3月 21

プログラミングをはじめる前に決める言語選択[その1]

ニコニコ生放送で「プログラミングはじめたいんです~」みたいな放送を見てると、

言語論争が勃発する(;゚Д゚)!

みんな自分のやってる言語が好きで好きでたまらないから仕方ないね。まぁ、見ててそういう放送が一番おもしろいんだけどね。
まぁ、そういう経緯もあってちょっと言語選択の足がかりになるような記事を書いてみようと思った。

さてさて、プログラミングをはじめる方が良く言うのは、「初心者におすすめの言語ってありますか~?」みたいに言う人多いんだけど、これっていう言語はない!
だから、まずは何をしたいか決めるのが一番だと思う。何をしたいかの候補はこんな感じ

1.PCゲームつくりてええええ!
2.Webで一山あててえええ!
3.スマフォ稼げるんでしょ?アプリ作りてえええ!
4.PCで動くツール作りたいぜ!
5.俺は硬派に組み込み系で炊飯器作るぜ!
6.OSとか作ってみたい!

みたいな感じかな。まぁ、もっといろいろあるけど。とりあえず。これで僕がおすすめするのは以下になる

1.C/C++,C#,HSP
2.HTML+javascript+(PHP or Ruby or Python)
3.Java,Objective-C,C/C++
4.C/C++,C#,Java,
5.C++,Java
6.C?(C++でOSって作れるの?わからんがC or C++で作れると思う)

まぁ、こんな感じ。もっと言語はあるけど王道はこんな感じかな?

で、まぁ、それぞれの言語の特徴をあげる。

C/C++言語—–
プログラミング界の大堂的存在の言語。どの言語にもCで勉強したことは大抵使える。だからみんな「とりあえずプログラミング初心者ならCやっとけ!」って進める人が多いね。
とりあえずいろいろできる。ゲーム作れるPCツール作れるスマフォアプリも作れるらしい、あとOSなんかも作れるし、炊飯器とか車とかのいわゆる組み込みってのにも使われる言語。

「C言語最強!なにこれぱない!しゃああ!C言語でプログラミングするぜえええ!」

って意気込んだ人はこの世にいっぱいいたと思う。
はい。僕もその一人でした。

しかし、メリットがあればデメリットもある。

とにかく難しい!本当の地獄が広がっている

もうね、C言語にはね、深い深い地獄が待っている。まぁ、どんな言語にも地獄は広がってるんだけど、とにかくC言語はやばい!
C言語初心者でつまずくのがポインタって言われてるんだけど、概念自体は簡単なんだよ。だから

「簡単簡単!なんだC言語全然怖くないじゃんwwwww」

なんて思ってると痛い目を見る。
C言語上級者の記述したコードは何を書いているかわからない。もうカオスな世界が広がっている。
そこにメモリ管理なんてのも入ってくるし、俺は難しいところこれくらいしか知らないけど、それだけで無理

この言語に初めて触ったのが高校2年生の時。んで、挫折してプログラミングを1年間やらなかった。
それぐらい深い傷を作ってくれる言語。それがC言語。
それでも、プログラミングのベースとなる知識はいっぱいあるし、本当に細かいところはC言語でしか実装できないから避けては通れない言語ではある。
「何作るって決まってないし~」っていう人にはおすすめかも。ただ、もう無理!って思ったら別言語へ行くことをおすすめします。

この言語をおすすめする人
・ドMな人
・もういじめて欲しくてたまらない人
・勉強したくてしたくてたまらない人。
・まだ何したいか決まってないし、とりあえずプログラミングやってみたいって人

疲れた。(o´Д`)=з
他の言語はまた今度あげて今日はこのぐらいにしときます。
間違いあると思うし、C言語について他の良いこと悪いことあればコメントしてもらえるとうれしいです。
ではでは、ヽ(*´∀`)ノ

3月 13

WPFで枠を消してなんちゃらこんちゃら

こんな感じのUIにしたいんだけど、なかなか難しい
SimpleTweetUI

とりあえずXAMLで7行目のように、WindowStyle=”None” AllowsTransparency=”True”と指定してあげると枠なしWindowは生成できる。

1
2
3
4
5
6
7
8
9
10
11
12
13
<Window x:Class="StudyUI.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
        xmlns:local="clr-namespace:StudyUI"
        Title="MainWindow" Height="23" Width="200"
        WindowStyle="None" AllowsTransparency="True">
    <Grid>
        <TextBox x:Name="TestBox" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
        <Button Content="Button" HorizontalAlignment="Left" Margin="120,0,0,0" Width="58" >
        </Button>
    </Grid>
</Window>

問題はこれだけじゃ、リサイズ&移動ができないこと。
添付ビヘイビアでちょこちょこやってできたらまた記事UPします。

ちなみに、コードビハインドで

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace StudyUI
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
        {
            this.DragMove();
        }
    }
}

こんな感じにしてあげれば、コントロールのない部分をドラッグすることでWindowを移動することは可能
だが、やはりビヘイビアを知ってしまった今、コードビハインドに記述するのは避けたい

3月 13

続wp-syntax

プラグインを入れた時点では100行以上のコードに対して、行番号がうまいこと表示されなかったのですが、あおさんのコメントから修正を行ったところ良い感じになりました!
以下、あおさんのコメント引用

「wp-syntax.cssの中の
.wp_syntax td.line_numbers pre の中の

width : 16px !important;

をコメントアウトして

/*width : 16px !important;*/
にしたら直るかも。もしくは20pxぐらいに広げるか。」
20pxに広げると治りました。

う~ん。あおさん何者なんだ。。。
WEB関係もできるのかな?

3月 12

Twitterクライアント制作講座[第1回]

※この記事はプログラミング初心者が投稿しております。

一通り基本構文を勉強したけど、コンソールアプリケーションばかりでツールってどうやって作れば良いかわからない。
という人のために今回はGUITwitterクライアントの制作方法について記述したいと思います。第1回ではVisualStudioのインストール。TwitterAPIを使用するための設定を行います。
開発にはC#のWindowsフォームアプリケーションで制作したいと思います。

とりあえず、統合開発環境のVisualStudioを使用しますので、以下のURLからインストール作業を行ってください。
まぁ、Editorみたいなものですね。無料版でも全然使えます。むしろ有料版なんて買っても使いこなせないので無料版でOKです。
http://www.visualstudio.com/ja-jp/downloads

いろいろありますが、「Visual Studio Express」の「Microsoft Visual Studio Express 2013 for Windows Desktop」をインストールしてください。自動でインストールできますのでこの記事では割愛します。

さて、VisualStudioのインストールが完了したら、TwitterAPIを使用するためにアプリケーション登録を行いましょう。
事前にTwitterアカウントは取得しておいてください。

1.TwitterDevelopersにログインを行います。以下のURLから登録しているTwitterIDとPWを入力します。
https://dev.twitter.com/user/login?destination=home
ログイン

2.ログインが完了しましたら以下の画像の[My applications]をクリック
ログイン完了

3.[Create New App]をクリック
CreateNewApp

4.制作するアプリケーションの情報を記述します。
Name:アプリケーションネーム(※「Twitter」という言葉は入力することができないので注意です)
Description:アプリケーションの説明
WebSite:自分のサイト(僕はTwitterのメインページを設定したりします。何でもいいので適当に)
CallBackURL:入力しなくて良い
最後に規約に同意するにチェックを行って。アプリケーション登録を行ってください。
(※この時、エラーが出ることがあります。携帯登録を行わないと使用できないようになったようです。スマートフォンでTwitterの公式Appをインストール、使えるように設定するとこのエラーはなくなります。)
CreateAnApplication

5.アプリケーションの設定を行います。[Permissions]をクリック
AppDetails

6.APIのアクセスタイプを選択します。ReadOnlyではつぶやくAPIなどが使えませんので[Read,Write and Access direct messages]を選択し、とりあえず最大の権限を与えておきます。選択を行ったら[Update setteings]で更新
Permissions

7.最後に[Api Keys]をクリックし、[API key]と[API Secret]をメモって終了です。
Api Keys

お疲れ様でした~。次回は実際にTwitterクライアントを制作していきたいと思います。

3月 12

wordpressとtwitter連動

wordpressへ記事を投稿するとtwitterへお知らせする機能がないものかと調べたところ

WP to Twitter

っていうプラグインでできるっぽい。
この記事はテスト投稿です。

3月 12

wordpressでC#コードを投稿する

うまいことプログラミングコードを載せる方法ないかなっと思って調べてみた。
WP-Syntaxってプラグインを導入すれば良いみたい。

以下テスト

1
2
3
<?php
 print "PHPソースコード\n";
?>

100行以上だったら行番号バグるっぽい。
まぁ、100行以上書かなければ良いからこれ使うかな~

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using XVideosForm.Controller;
using OreOreLibrary;
 
namespace XVideosForm
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }
 
        ///フィールド
        SearchController searchContoroller;
        DownloadController downloadController;
        DataGridViewButtonColumn dataGridViewButtonColumn;
        SettingForm settingForm;
 
        /// <summary>
        /// XVideosFormロード時の処理
        /// 設定も読み込む。もし設定されていない場合はポップアップで設定されていないうまを表示
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void XVideosForm_Load(object sender, EventArgs e)
        {
            ///サーチコンボボックスの設定
            this.sortByComboBox.SelectedIndex = 0;
            this.dateComboBox.SelectedIndex = 0;
            this.durationComboBox.SelectedIndex = 0;
            this.pageComboBox.SelectedIndex = 0;
 
            ///インスタンスの生成
            this.searchContoroller = new SearchController();
            this.downloadController = new DownloadController();
 
            //データソースの設定
            this.searchResultGrid.DataSource = this.searchContoroller.DataSource;
            this.downloadInfoDataGridView.DataSource = this.downloadController.DataSourse;
 
            ///searchResultGridの設定
            ///ダウンロードボタンカラムの追加
            this.dataGridViewButtonColumn = new DataGridViewButtonColumn();
            this.dataGridViewButtonColumn.DataPropertyName = "Url";
            this.dataGridViewButtonColumn.Name = "download";
            this.dataGridViewButtonColumn.HeaderText = "ダウンロード";
            this.dataGridViewButtonColumn.UseColumnTextForButtonValue = true;
            this.dataGridViewButtonColumn.Text = "Download";
            this.searchResultGrid.Columns.Add(this.dataGridViewButtonColumn);
            ///表示の整形
            this.searchResultGrid.Columns["Image"].DisplayIndex = 0;
            this.searchResultGrid.Columns["Image"].Width = 42;
            this.searchResultGrid.Columns["Thumbnail"].Visible = false;
            this.searchResultGrid.Columns["ID"].Visible = false;
            this.searchResultGrid.Columns["Url"].Visible = false;
 
            //データバインディング
            this.sortByComboBox.DataBindings.Add("SelectedItem", this.searchContoroller, "SortBy", false, DataSourceUpdateMode.OnPropertyChanged);
            this.dateComboBox.DataBindings.Add("SelectedItem", this.searchContoroller, "Date", false, DataSourceUpdateMode.OnPropertyChanged);
            this.durationComboBox.DataBindings.Add("SelectedItem", this.searchContoroller, "Duration", false, DataSourceUpdateMode.OnPropertyChanged);
            this.pageComboBox.DataBindings.Add("SelectedItem", this.searchContoroller, "Page", false, DataSourceUpdateMode.OnPropertyChanged);
            this.searchBox.DataBindings.Add("Text", this.searchContoroller, "KeyWord", false, DataSourceUpdateMode.OnPropertyChanged);
            this.stateLabel.DataBindings.Add("Text", this.downloadController, "State", false, DataSourceUpdateMode.OnPropertyChanged);
 
            this.stateLabel.Text = "ダウンロード待ち";
 
            this.downloadController.SettingWarningPopUpEvent += this.settingWarningPopUp;
        }
 
        /// <summary>
        /// 「設定」クリック時の処理
        /// 設定windowを表示
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 設定ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (this.settingForm == null)
                this.settingForm = new SettingForm();
 
            this.settingForm.ShowDialog(this);
        }
 
        /// <summary>
        /// SearchBoxでEnterが押された場合の処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void searchBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                this.searchContoroller.Call_SearchModel();
        }
 
        /// <summary>
        /// ダウンロードボタンが押された時の処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void searchResultGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView dataGridView = (DataGridView)sender;
 
            var title = dataGridView.CurrentRow.Cells[1].Value.ToString();
            var playTime = dataGridView.CurrentRow.Cells[2].Value.ToString();
            var videoID = dataGridView.CurrentRow.Cells[3].Value.ToString();
            var videoUrl = dataGridView.CurrentRow.Cells[4].Value.ToString();
 
            //ボタンが押された時のみ処理を行う
            if (dataGridView.Columns[e.ColumnIndex].Name == "download")
                this.downloadController.Call_DownloadModel(title, videoUrl, playTime, videoID);
        }
 
        /// <summary>
        /// ダウンロード処理を実行している時、並列ダウンロード数の設定を変更した場合呼ばれる
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void settingWarningPopUp(object sender,EventArgs e)
        {
            MessageBox.Show("並列ダウンロード数の項目を変更しました。\r\nこちらの設定はアプリケーション再起動後適用されます",
                "Info",
                MessageBoxButtons.OK,
                MessageBoxIcon.Asterisk);
        }
 
        /// <summary>
        /// 明日はここからだよ~
        /// ダウンロード中のファイルがあれば警告を出す
        /// 警告を無視って終了する場合は、ダウンロード中のファイルを削除して終了する
        /// DownloadControllerに現在のダウンロード状態を持たせておく
        /// のちのちはラベルなりで全体のダウンロード状態を表示する実装もする
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            //これでフォームのクローズを阻止できる
            //e.Cancel = true;
        }
    }
}

1月 19

今日のお昼はこれで

http://cookpad.com/recipe/2467594

うん。どうせ今から風呂入ってスーパー行ったら4時とかになるのはわかっているが。
これ作ろう!

1月 18

青椒肉絲

写真 2014-01-18 20 04 04
くそうまく簡単なのでお勧め
鍋を良くするので、+ピーマンで細切れ余ったら作ってます

細切れ 適当
ピーマン 2つぐらい適当
酒 大さじ1
みりん 小さじ1
しょうゆ 小さじ2
ごま油 適当
塩コショウ 適当
でおk

簡単10分♡家にある材料+豚肉で青椒肉絲

片栗粉とか別にいらん

1月 18

おしゃれアイテム追加

部屋を掃除してたら見つけたので加湿器を飾ってみた
2014-01-18 18.25.42

なかなか良い!
昔はインテリアに凝ってたのにな~っと思いつつ。。。

一人暮らしすると部屋が汚くなるのは仕方がない。。。

1月 18

WordPressのコメント自動承認

コメントが自動承認になってなかったので修正
[設定]-[ディスカッション]-[コメントの表示条件]
のチェックをすべてはずし、プラグインの「Akisment」を停止すれば自動承認になるようです。

古い記事へ «