イノベーションの弊害について考える
教育とは、をもう何年も考え続けてきた、いろいろな捉え方があって、情報の伝達としての一般化をしようと、数式にした事もあった、最近おもっている事は、本質的には、コミュニティの形成上において必要の為に行われる行為であり、コミュニティ の中に適応または、そのコミュニティの求める行為に従順させる為の活動。
とした場合、
学習とは、生物が生まれてから次の子孫繁栄までに生きるおよび、子孫を繁栄する為に環境に適応する事を目的とした能力。
だから、
ときに、教育は学習能力を抑える事で、そのコミュニティの形成を守る。 ときに学習は環境に応じる事で生命の繁栄が最大となるのであればその能力を抑える事をも学習する。
という事で、イノベーションの弊害になる教育が悪いのではなく、そのコミュニティの保持の為に必要な事で、社会的に滅ぶ時がくれば、コミュニティ毎なくなるかも知れないけど、別の新たなコミュニティが生まれて全体的に見たら別にそんな大騒ぎする程のこっちゃないよね。って感じ。
バカと天才が紙一重というのは、単純にはみ出した考えが受け入れられたか否かの違いで、周りの 人の評価にしか過ぎないので、超頑固とか、いう事聞かないとかって、別に悪い事じゃなくて、おまえ、俺のコミュニティで生活してく?って事だけなのかも知れない。
子供が生まれて最初に属するコミュニティは家族であって、その家族がコミュニティとして機能しない状況なら、別にここに教育は生まれない。
だって、必要ないからね。
子供が家庭の次に入るコミュニティは学校だと思う、ここで先生や親が社会との繋がりを重視して いなければ、子供は社会に触れる事なく、2つの小さなコミュニティが全世界となってしまう。
塾や習い事、親が社交的、先生が先進的で社会の話しやアクセスをする、部活を通して他のコミュニティにアクセスする、どこまで多様なコミュニティに触れる事ができるかは非常に重要じゃないかと思う。コミュニティ毎の教育が存在して、コミュニティを超えた学習が発達すれば、一つのコミュニティの保持の為に学習が抑えらえる事が無くなるから。
貧困の連鎖の問題も、イノベーションの弊害も、こんな感じで説明できないか?なんて事を考えている。
連番の番号付きのボタンをpng形式で大量に生産する方法
番号付きのボタンを大量にPNGで作らなければいけない。 簡単な方法知ってる? と聞かれたので、多分Photoshopでバッチ処理的な何かでできるんじゃなかろうかと思い。
できるよ。と言ってやったものの、普段あまり使わないので方法を忘れないうちに記録しておきます。 いや、そこそこ、ニーズありそうだと思うのですが、僕の場合の使用頻度は少ないので、次使う時に 忘れてしまいそう。
方法は簡単で、Photoshopのファイル>スクリプト>参照>○○.jsを実行することで、番号が連番でついているボタンを生成しPNGで決められたフォルダに保存する。
ということをやらせたい。
で、次のJavaScriptを作った。
setUnit(Units.PIXELS); // 単位設定 saveFolder = "~/png/"; motoFile = new File("~/base.psd"); textFont = "HiraKakuPro-W6"; // 書体 textSize = 24; // 文字サイズ(point) textDX = 40; // 表示X位置(offset形式) textDY = 100; // 表示Y位置(offset形式) textColor = new SolidColor(); textColor.rgb.red = 255; textColor.rgb.green = 255; textColor.rgb.blue = 255; for(i=1; i<=50; i++) { num = "0"+i; num = num.substring(num.length-2,3); saveName = num; open(motoFile); layObj = activeDocument.artLayers; layRef = layObj.add(); layRef.kind = LayerKind.TEXT; layRef.textItem.contents = saveName; layRef.textItem.font = textFont; layRef.textItem.size = textSize; layRef.textItem.color = textColor; layRef.translate(textDX,textDY); savePng(saveFolder+"thumb_h_"+saveName+".png"); activeDocument.close(SaveOptions.DONOTSAVECHANGES); } function savePng(pngFileObj) { saveFileObj = new File(pngFileObj); var pngOpt = new PNGSaveOptions(); pngOpt.compression = 9; pngOpt.interlaced = true; activeDocument.saveAs(saveFileObj, pngOpt, true, Extension.LOWERCASE); } function setUnit(unt) { preferences.rulerUnits = unt; } function getUnit() { return preferences.rulerUnits; }
先にいうと、base.psdにベースとなる背景を作成し、その上に数字の連番をテキストで追加し、png形式で、あらかじめ準備しておいたpngフォルダに保存させている。
今回の要望は50ボタン作成してとのことだったので、ループは1から50まで回している。
ubuntuでShape 形式の地図データをTopoJSON 形式に変換する。
簡単な事を言うと、下記ブログで書かれている事をしようとした時に環境が違うので、ubuntu環境でのやり方を自分の為にも記録。
ubutnuでShape形式の地図データをTopoJSON 形式に変換する 為に次のステップを踏む必要があるが、ShapeからGeoJSONに変換する為に、ogr2ogrという コマンドを使うらしい。 そのコマンドが使えるライブラリは、CentOSだと、EPELというパッケージに揃っているらしいのだが、私の環境はubuntuで構築しているので、ubuntuでogr2ogrを利用する為の手順を記録しておく。
Shape 形式の地図データを入手する
GeoJSON 形式に変換する
TopoJSON 形式に変換する
まずは、ogr2ogr --version
以前構築した際に、環境にすでにインストールしているかもしれないので、バージョンコマンドで確認してみた所、、、、入ってない。(入れた記憶ないし、そりゃそうだ。)
で、丁寧にgdal-bin
をインストールしなさいと教えてくれたので、管理者権限でインストール。
sudo apt-get install gdal-bin
で無事にインストールできたか確認 ogr2ogr --version
GDAL 1.10.1, released 2013/08/26
と表示され、無事にインストールできたよう。
では、ogr2ogrを使って、GeoJSONファイルに変換。
ogr2ogr -f GeoJSON ne_10m_admin_0_disputed_areas.geojson ne_10m_admin_0_disputed_areas.shp
ここまでできたので、あとは、上で紹介したブログの通りに進めようとした所、他にもインストールしておく必要のある ライブラリを使っていたので、それもインストール。
apt-get install jq
それから、npmも使うので、インストール。
apt-get install npm
npmをインストールしたら、npmをつかって、topjsonをインストール。
npm -g install topojson
とりあえず、これでubuntuでの準備はOK
開発環境整えるまで。自分用のメモ
環境構築のために、いろんなものインストール。 目指す開発環境は、仮想環境上で、webサーバーとserversideの言語をインストールし、webサービス構築の基盤を作ること。 サーバーは、ubuntu14.04 言語は、Python
仮想環境側はVagrantのBox化をして、これ以降の作業で壊しても最低限の環境に素早く復旧できる ようにしておく。
mac側にインストールするもの。
Xcode commandline tools :
VM : VirtualBox : Oracle VM VirtualBox - Downloads | Oracle Technology Network | Oracle
HomeBrew:
Cyber-duck:Cyberduck | Libre FTP, SFTP, WebDAV, S3 & OpenStack Swift browser for Mac and Windows
仮想環境側でインストールするもの
- build-essential
- libsqlite3-dev
- libreadline6-dev
- libgdbm-dev
- zliblg-dev
- libbz2-dev
- sqlite3
- tk-dev
- zip
- libssl-dev
- python-dev
- pip
- python-2.7.9 '''wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz '''
- git
- d3.js
- nodebrew
- node.js
- mongodb
- Mercurial
とりあえず、この環境でベースとなるVagrant boxを作成。 boxの名前はubuntu14.04xbase
Django環境構築 Linux CentOS 編 その3 Python2.7.9インストール
前回の続き
CentOS に入って、まずはアップデートできるものを確認する。
yum check-update
一応確認し、特に何か確認しておきたいものがあるわけではないので、 スルーして、アップデートを実行する。
updateはルート権限で行う。
sudo yum update
インストールに必要なものをインストール
sudo yum install zlib zlib-devel tk-devel tcl-devel sqlite-devel ncurses-devel gdbm-devel readline-devel bzip2-devel db4-devel openssl-devel
続いて、Python2.7.9のインストール
wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz tar zxvf Python-2.7.9.tgz cd Python-2.7.9 ./configure --with-threads --enable-shared --prefix=/usr/local make sudo make altinstall
Python2.7.9の圧縮ファイルをダウンロードして、解凍し、できたPython2.7.9フォルダに移動してから、インストールしています。
つづいて、Djangoをインストールしたいのですが、Djangoを簡単にインストールする為に pipをインストールします。
sudo easy_install pip
Djangoのインストール
pip install Django==1.8
Djangoが無事にインストールされているかの確認。 pythonを実行して、import djangoとしてエラーがでなければ成功。
>>> import django >>> print django.get_version()
1.8と出たので、Ctrl + DでPythonのインタプリタモードから抜けて、
mkdir test
Djangoでソースを置きたいフォルダを作成し、今回はtestとして作った。 移動する。
Django環境構築 Linux CentOS 編 その2 Vagrantの操作
いよいよ、CUI側でvagrantでバーチャル環境を構築していきます。 ちなみに、Vagrantとは何ぞやについてや、Vagrantについてもっと知りたい方は こちらを読んでみると良いです。Vagrant入門 – Vagrantとは? なぜ Vagrant なのか? | WEB ARCH LABO
Vagrantではまず、Boxを作ります。Boxを一からつくるより、すでに作られたBOXを 持ってくる方が簡単です。すでに作られたBOXを検索するのは、こちらから辿ってください。
A list of base boxes for Vagrant - Vagrantbox.es
詳しくは、下記URLの記事を参照ください。
Mac OS X 版Vagrantを利用して仮想マシンを操作してみよう | WEB ARCH LABO
簡単に説明すると、vagrant boxを追加する上で、Box名は好きに作れます。
Box名を{name}の部分に、下記、その後に上のURLから辿ってほしいOSのバージョンのURLをコピーしたものを{url}の部分に貼り付けます。
vagrant box add {name} {url}
今回はCentOS 7をインストールしたいと思います。 が、ここでいきなり打ち込む前に少しした準備をしておきたいと思います。 管理しやすいようにフォルダを作成しておきます。
mkdir MyVagrant && cd MyVagrant
mkdir mycentos7 && cd mycentos7
mkdirはフォルダ作成コマンドです。 mkdir {フォルダ名} cdはフォルダへの移動をします。cd MyVagrantとする事で、MyVagrantフォルダに移動しています。 &&は2つのコマンドをつなげて1行で実行する時に使います。
Linuxのコマンドを詳しく知りたい人は下記URLも参考にしてください。 Linux コマンドリファレンス
何の為にこんな事をしているかというと、この後に行う、Vagrant環境構築で、vagrantofileというものができます。で、今回はCentOSを追加しますが、Ubuntuなども追加したい場合や、他のバージョンのCentOSの環境を作ろうといった場合に、フォルダを分けて作成するのですが、その場所をMyVagrantフォルダで管理しようとしています。
それでは、次の場所に移動したら、MyVagrant/mycentos7/ vagrant boxを追加していきましょう。
vagrant box add mycentos7 https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box
としました。
インストールができているかを確認するためにvagrant box list
と打ちます。
listに今回追加したmycentos7 (virtualbox,0)と出て来れば成功です。
次に仮想マシンの初期化をします。
vagrant init mycentos7
初期化がすんだので、仮想マシンを早速立ち上げます。
起動のコマンドは、vagrant up
となります。
成功していれば、エラーでないのですが、今回はエラーがでちゃいました。
Failed to mount folders in Linux guest. This is usually because the "vboxsf" file system is not available. Please verify that the guest additions are properly installed in the guest and can work properly. The command attempted was: mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant The error output from the last command was: /sbin/mount.vboxsf: mounting failed with the error: No such device
という事で、対処方法を探すとここにあった。 Vagrantの仮想マシンにphpMyAdminをインストール - one by one
早速、実行
$ vagrant ssh $ sudo /etc/init.d/vboxadd setup $ exit $ vagrant halt $ vagrant up
ちなみに、vagrant sshで、一度CentOS7にアクセスしてからルート権限で、vboxaddをセットアップして、 その後一度、仮想環境を終了して、再度、起動をしている。
/etc/init.d/vboxaddが何するファイルか気になったので、再びログインしてviエディタで中を覗きにいったら、 カーネルモジュールと書かれていた。ちなみに、カーネルモジュールについて知りたい方はこちら Linuxキーワード - カーネル・モジュール:ITpro
さて、深追いしたおかけげ、何しているのかが若干もやっと理解できたが、その部分はまた今度違う時に書きます。ここで書くと横道それすぎちゃうので。
vagrant upの後に、あらためて、
vagrant ssh
でCentOSバージョン7の環境に入ります。
これで、CentOSの仮想環境立ち上げが終わりました。 次回からは、実際にCentOS7にDjangoの環境を構築していきます。
ちなみに、ここまでやってよくわからないけどエラーでてしまったとか、どこまでやったかわからなくなって 最初からやり直したいなんて場合は、
vagrant sshでログインできていれば、exitで抜けてから、vagrant halt
で終了させて、vagrant destroy
で
環境を壊して、再度やり直してみてください。
vagrantのコマンドは以下を参考ください。 コマンドライン | Vagrant日本語ドキュメント