Monthly Archives: 2月 2015

「JavaScript学習」正規表現のtest()とexec()を利用する方法

参考コード

<html>
<head>
<script type=”text/javascript”>
function startnews1(){
var con = document.getElementsByName(‘content’)[0].value;//検索
var reg = /hi/;//マッチ
alert(reg.test(con));
}
function startnews2(){
var con = document.getElementsByName(‘content’)[0].value;//コンテンツを検索
var reg = /\bhi\w+/;//コンテンツをマッチ
alert(reg.exec(con));
}
</script>
</head>
<body>
<textarea rows=”5″ cols=”30″ name=”content”></textarea><br />
<button onclick=”startnews1();”>正規表現(testメソッド)</button><br />
<button onclick=”startnews2();”>正規表現(execメソッド)</button>
</body>
</html>

「Objective-C」iosで画像の幾何学変換のサンプルコード

参考ソースコード:
+ (UIImage *)thumbnailWithImageWithoutScale:(UIImage *)image
size:(CGSize)asize
{
UIImage *newimage = nil;
if (image)
{
CGSize oldsize = image.size;
CGRect rect;
if (asize.width/asize.height > oldsize.width/oldsize.height)
{
rect.size.width = asize.height*oldsize.width/oldsize.height;
rect.size.height = asize.height;
rect.origin.x = (asize.width – rect.size.width)/2;
rect.origin.y = 0;
}
else
{
rect.size.width = asize.width;
rect.size.height = asize.width*oldsize.height/oldsize.width;
rect.origin.x = 0;
rect.origin.y = (asize.height – rect.size.height)/2;
}
UIGraphicsBeginImageContext(asize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
UIRectFill(CGRectMake(0, 0, asize.width, asize.height));
[image drawInRect:rect];
newimage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
return newimage;
}

iOS8でのプッシュ(push)通知の実装プログラムコード

サンプルコード:
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define iOS8 SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@”8.0″)

– (void)registerPushNotice:(NSDictionary *)launchOptions{
//プッシュ登録
if(iOS8)
{
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings
settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge)
categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
else
{
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert];
}
if (launchOptions) {
if([self pushNotificationOpen])
{
//プッシュ開始
NSDictionary* pushNotificationKey = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (pushNotificationKey) {
if([UIApplication sharedApplication].applicationIconBadgeNumber>0){
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}
[self didReceiveRemoteNotification:pushNotificationKey];
}
}
else
{
//do nothing…
}
}
else {
if([UIApplication sharedApplication].applicationIconBadgeNumber>0){
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}
}
}

//プッシュがオープンかどうかを判断
– (BOOL)pushNotificationOpen
{
if (iOS8)
{
UIUserNotificationType types = [[UIApplication sharedApplication] currentUserNotificationSettings].types;
return (types & UIRemoteNotificationTypeAlert);
}
else
{
UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
return (types & UIRemoteNotificationTypeAlert);
}
}

iOS8向けplistを作成するサンプルコード

参考ソースコード
+ (NSString *)getFilePath

{

NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) objectAtIndex:0] stringByAppendingPathComponent:@”photo.plist”];

if ([[NSFileManager defaultManager] fileExistsAtPath:path] == NO)

{

NSFileManager* fileManager = [NSFileManager defaultManager];

//if(IOS7)

[fileManager createFileAtPath:@”photo.plist” contents:nil attributes:nil];

//if(IOS8)

[fileManager createFileAtPath:path contents:nil attributes:nil];

NSMutableArray *photoPathArray = [NSMutableArray array];

[photoPathArray writeToFile:path atomically:YES];

}

return path;

}

Objective-CでNSStringからHEX(c)への変換方法

参考ソースコード
#define HEXCOLOR(c)
[UIColor colorWithRed:((c>>16)&0xFF)/255.0 green:((c>>8)&0xFF)/255.0 blue:(c&0xFF)/255.0 alpha:1.0];
baseView.backgroundColor = HEXCOLOR(strtoul([@”0xf74545″ UTF8String],0,16));

Linux基本コマンドまとめ—–ファイルのアーカイブ(解凍)、ファイルのマウントとプロセス操作

1.ファイルをアーカイブ、解凍
bunzip2 file1.bz2
bzip2 file1
gunzip file1.gz
gzip file1
gzip -9 file1
rar a file1.rar test_file
rar a file1.rar file1 file2 dir1
rar x file1.rar
unrar x file1.rar
tar -cvf archive.tar file1
tar -cvf archive.tar file1 file2 dir1
tar -tf archive.tar
tar -xvf archive.tar
tar -xvf archive.tar -C /tmp
tar -cvfj archive.tar.bz2 dir1
tar -xvfj archive.tar.bz2
tar -cvfz archive.tar.gz dir1
tar -xvfz archive.tar.gz
zip file1.zip file1
zip -r file1.zip file1 file2 dir1
unzip file1.zip

2.ファイルシステムのマウント
mount /dev/hda2 /mnt/hda2
umount /dev/hda2
fuser -km /mnt/hda2
umount -n /mnt/hda2
mount /dev/fd0 /mnt/floppy
mount /dev/cdrom /mnt/cdrom
mount /dev/hdc /mnt/cdrecorder
mount /dev/hdb /mnt/cdrecorder
mount -o loop file.iso /mnt/cdrom
mount -t vfat /dev/hda5 /mnt/hda5
mount /dev/sda1 /mnt/usbdisk
mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share

3.プロセスの操作
ps -e
sudo kill xxxx

Linux基本コマンドまとめ—–権限とAPTの操作

1.権限について操作
su –
ls -lh 権限を表示
ls /tmp | pr -T5 -W$COLUMNS

chmod u+s /bin/file1
chmod u-s /bin/file1

2.APTについての操作
apt-get install package_name
apt-cdrom install package_name
apt-get update
apt-get upgrade
apt-get remove package_name
apt-get check
apt-get clean
apt-cache search searched-package

Linux基本コマンドまとめ—–ファイルとディレクトリの操作

基本コマンド:
cd /home
cd ..
cd ../..
cd
cd ~user1
cd –
pwd
ls
ls -F
ls -l
ls -a

mkdir dir1
mkdir dir1 dir2
mkdir -p /tmp/dir1/dir2
rm -f file1
rmdir dir1
rm -rf dir1
rm -rf dir1 dir2
mv dir1 new_dir
cp file1 file2
cp dir/* .
cp -a /tmp/dir1 .
cp -a dir1 dir2

xdg-open filename

ubuntuでMemcached環境を構築、テストする方法

1.インストール
sudo apt-get install memcached
memcached -d -m 64 -p 11211 -u root

2.Javaの場合、必要なjarファイル
commons-pool-1.6.jar
java_memcached-release_2.6.6.jar
slf4j-api-1.7.6.jar

3.参考ソースコード
package com.startnews24.mms;

import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

public class MemcacheConnection {

protected static MemCachedClient mcc = new MemCachedClient();

protected static MemcacheConnection memCached = new MemcacheConnection();

static {
// サーバーリスト
String[] servers = { “127.0.0.1:11211” };
Integer[] weights = { 3 };

//socketインスタンス
SockIOPool pool = SockIOPool.getInstance();

// サーバーの設定
pool.setServers( servers );
pool.setWeights( weights );

//接続の初期数、最小値、最大接続数と最大処理時間
pool.setInitConn( 5 );
pool.setMinConn( 5 );
pool.setMaxConn( 250 );
pool.setMaxIdle( 1000 * 60 * 60 * 6 );

pool.setMaintSleep( 30 );

// TCPパラメータ
pool.setNagle( false );
pool.setSocketTO( 3000 );
pool.setSocketConnectTO( 0 );

//接続プールを初期化
pool.initialize();

//mcc.setCompressEnable( true );
//mcc.setCompressThreshold( 64 * 1024 );
}
protected MemcacheConnection()
{

}

/**
* ユニークなインスタンス
* @return
*/
public static MemcacheConnection getInstance()
{
return memCached;
}

/**
* 指定されたキャッシュに値を追加
* @param key
* @param value
* @return
*/
public boolean add(String key, Object value)
{
return mcc.add(key, value);
}

public boolean add(String key, Object value, Date expiry)
{
return mcc.add(key, value, expiry);
}

public boolean replace(String key, Object value)
{
return mcc.replace(key, value);
}

public boolean replace(String key, Object value, Date expiry)
{
return mcc.replace(key, value, expiry);
}

public boolean exists(String key){
return mcc.keyExists(key);
}

/**
* 指定されたキーワードに基いてオブジェクトを取得
* @param key
* @return
*/
public Object get(String key)
{
return mcc.get(key);
}

public static void main(String[] args)
{
MemcacheConnection cache = MemcacheConnection.getInstance();
long startDate=System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
cache.add(“wow”+i, “welcome to arkgame.com”+i);
}
long endDate=System.currentTimeMillis();
long nowDate=(endDate-startDate)/1000;
System.out.println(nowDate);
System.out.print( ” get value : ” + cache.get( “wow97” ));
}
}

ubuntuでrabbitMQをインストールする方法

1.erlangのダウンロード
http://www.erlang.org/download/opt_src_17.3_tar.gz
解凍
./configure –prefix=/home/liyixiang/erlang

2.下記エラーが発生する場合
configure: error: No curses library functions found
configure: error: /bin/sh ‘/home/liyixiang/erlang/configure’ failed for erts
対策
apt-cache search ncurses
apt-get install libncurses5-dev

3.erlangのインストール
コマンド
make make install

4.テスト
cd /home/startnews24/erlang
erlが起動

5.erlang環境変数の設定
vim /etc/profile文件
#set erlang environment
export PATH=$PATH:/usr/erlang/bin
source profile

6.rabbitMQのインストール
ダウンロード
http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.5/rabbitmq-server-generic-unix-3.3.5.tar.gz
/usr/の直下に解凍する

設定方法
vim /etc/profile
#set rabbitmq environment
export PATH=$PATH:/usr/rabbitmq_server-3.3.5/sbin
source profile

下記エラー現象が発生する場合
./rabbitmq-server: line 86: erl: command not found
修正
rabbitmq_server-3.3.5/sbin/rabbitmq-server-3.3.5
export PATH=$PATH:/usr/erlang/bin

起動
./rabbitmq-server.start !!