OpenWrt를 적용해 볼려고 네티스 M1200AC 공유기를 중고로 사봤다.

네트스 WF-2881과 똑같고 모델명만 다르다.


가격은 싼데  가격에 비해 사양은 고사양이다. 듀얼코어에 5G, 2.4G 지원에 USB 3.0까지 지원한다.

게다가 Open Wrt를 쓸수 있는 한국 최초의 제품이다(아마도..)


Open Wrt는 설 지나고 나서야 설치할 수 있을 듯 하다.


다 좋은데 환기 구멍이 바닥 밖에 없는데..

환기 구멍도 작고 내부 구조 상 의미 없는 수준이다.


그래서 구멍을 뚫어 버렸다.





분해 중인 사진

참고로 사진상 파란 것은 스마트폰 디스플레이 분해 할때 쓰는 도구다.








분해 완료





분해 사진




공유기 바닥에 있는 구멍에 드릴를 살짝 올려놓고 드릴을 1, 2초정도만 돌려도 잘 뚫린다.


바닥에 놓고 뚫지 마시길..

바닥에 놓고 뚫을려다가 순식간에 뚫려 장판 뚫릴뻔 했다.


순식간에 뚫린다. 1, 2초반에 바로 ..


옆쪽은 작은 드릴로 실구멍을 뚫어 놓은다음 큰 드릴로 뚫는다.

바로 큰 드릴로 뚫으면 반듯하게 뚫리지 않는다.




위부분도 마찬가지로 작은 드릴로 먼저 뚫고 큰 드릴로 뚫었다.



완성된 공유기


좀 보기 흉하다.. 그냥 옆부분만 뚫고

윗부분은 놔둘걸 하는 생각을 했다.





바닥부분.. 가장 마음에 든다.




아래 사진과 같이 옆으로 세워 사용하고 있다.

쿨러를 달려고 생각했지만 쿨러 달면 소음이 생기기 때문에 그냥 구멍을 많이 뚫는것으로 참았다.




1. firewall 설정


 

# vi /etc/config/firewall


제일 하단에 아래 추가.

config redirect
        option src 'wan'
        option src_dport '22'         # 외부 접속 포트를 변경 시키고자 한다면 여기를 변경 시킨다.
        option dest 'lan'
        option dest_port '22'
        option proto 'tcp'
        option name 'ssh'
        option dest_ip '192.168.1.1'
 



2. firewall 재시작


# /etc/init.d/firewall restart


1. 여기서  http://freedns.afraid.org/ FREE 동적 DNS를 먼저 구한다.


동적DNS를 무료로 사용해보자 - FreeDNS - 여기를 참고 하라.



2. freedns 에서 키값을 얻는다.

http://freedns.afraid.org/dynamic/ 에 들어가서 중앙 하단 부분에 자기가 등록한 도메인이 있을 것이고 그 아래쪽에 Direct URL 를 클릭하면 새창이 뜬다.



 






여기서 나온 URL부분에

빨간 상자 부분이 키 값이다.


3. ddns-scripts 를 설치 및 설정 한다.


 # opkg install ddns-scripts


# vi /etc/config/ddns


# 아래 내용을 추가 한다.

config service 'mydns'
        option service_name 'afraid.org-keyauth'
        option domain 'mydns.mooo.com'       # 받은 도메인..
        option username 'username'               # 쓰지 않아도 된다.
        option password 'eFU5b3Z1YlZG                      ZXcm              gyNTE3'  # url에 나온 키값..
        option ip_source 'network'
        option ip_network 'wan'
        option enabled '1'
        option lookup_host 'mydns.mooo.com' # 받은 도메인..
        option check_interval '10'
        option check_unit 'minutes'
        option force_interval '24'
        option force_unit 'hours'



4.  ddns 재시작 및 로그 확인

# /etc/init.d/ddns enable

# /etc/init.d/ddns restart


# 로그 확인

# cat /var/log/ddns/mydns.log

...

...


현재 Django LTS 버전인 1.4.x 버전 기반용 소스이다.


단 책 뒷(feed)부분은 되지 않는다.


장고를 다운로드 받을때 장고 사이트를 가서 Download --> Django 1.4.X(LTS) 를 다운로드 받아야 한다.


버전이 틀리면 제대로 되지 않을 가능성 100% 이니 꼭 버전을 맞춰주자..



System Requirements
    python 2.7.x
    django 1.4.x

HOW TO RUN
    ./manage.py runserver

DB USER INFOMATION.
    id : test
    password : 11112222






django_bookmarks_1.4.x.7z


Hello world! 출력 커널 프로그래밍(32bit)

간략 버전


1. cd /usr/src/linux-2.6.32.60


2. arch/x86/kernel/syscall_table_32.S  추가 --> .long sys_hello_world        /* 337 */


3. arch/x86/include/asm/unistd_32.h  추가 --> #define __NR_hello_world     337 추가(337 은 마지막 숫자(336) + 1)


4. kernel/hello_world.c 생성 --> 


/* kernel/hello_world.c */

#include <linux/linkage.h>
#include <linux/unistd.h>
#include <linux/kernel.h>

asmlinkage int sys_hello_world()
{
    printk("Hello World!\n");
    return (0);
}
 


5. kernel/Makefile 수정


obj-y += groups.o hello_world.o  # hello_world.o 추가


6. 커널 컴파일

 # make mrproper && make clean && make menuconfig && make && make modules && make modules_install


7. 커널용 램디스크 생성

# cd /boot && mkinitramfs -o initrd.img-2.6.32.60 2.6.32.60


8. #update-grub && reboot


9. kernel include 링크 설정.

# cd /usr/include

# mv asm asm_bak

# mv linux linux_bak

# ln -sf /usr/src/linux-2.6.32.60/arch/x86/include/asm asm

#  ln -sf /usr/src/linux-2.6.32.60/arch/x86/include/linux linux


10. 테스트 코드 작성 및 컴파일

$ cd ~

$ mkdir tmp

$ vi mysys.c


#include <linux/unistd.h>
#include <stdio.h>
int main() {
     printf("%d\n", syscall(__NR_hello_world));
     return 0;


$ make mysys

$ ./mysys


11. 커널 로그 확인

$ dmsg

 ...

 [ 4501.406221] Hello World!

1. tomcat6, eclipse, java6 설치

 yaourt jdk6

 pacman -S tomcat6

 yaourt eclipse-indigo


2. wdt 설치

 eclipse --> help --> Install New SoftWare... --> Add... --> http://download.eclipse.org/releases/indigo 추가후 업데이트

 eclipse --> help --> Install New SoftWare... --> Add... --> Web Tools Platform SDK 3.3.2 설치.


3. eclipse 사용할 계정 tomcat 그룹에 추가.

 # gpasswd -a $USER tomcat


4. eclipse tomcat6 서버 설정

 eclipse --> window --> Preferences --> Server --> Runtime Environments --> Add

 tomcat6 선택 --> Tomcat Directory :  /usr/share/tomcat6 --> Finish



ASP.NET에서 예외 처리 로그를 출력하게 하는 것을 구현


LogMgr 클래스 만들기

public class LogMgr

{

static string prefixMsg = "\r\n-------------------------------------------";


// 일반 로그 남기기

static public void Log(string msg)

{

try

{

string logFileName = DateTime.Now.ToString("yyyy-MM-dd") + ".log";

StreamWriter tw = File.AppendText(logFileName);

tw.WriteLine(prefixMsg);

tw.WriteLine(msg);

tw.Close();

}

catch (Exception)

{

}

}


// 예외 로그

static public void ExceptionLog(Exception ex, string titleString = null)

{

string msg = "";

if (!string.IsNullOrEmpty(msg))

{

msg = titleString + "\r\n";

}


msg += GetExceptionMessage(ex);

msg = "예외 발생 일자 : " + DateTime.Now.ToString() + msg + "\r\n";

Log(msg);

}

// 마지막 예외 로그

static public void LastExceptionLog(string titleString = null)

{

//예외를 데이터베이스나 파일에 로깅한다

Exception ex = HttpContext.Current.Server.GetLastError();

ExceptionLog(ex, titleString);

}



// 예외 메세지 만들기

static private string GetExceptionMessage(Exception ex)

{

string err = "\r\n 에러 발생 원인 : " + ex.Source +

"\r\n 에러 메시지 :" + ex.Message +

"\r\n Stack Trace : " + ex.StackTrace.ToString();


if (ex.InnerException != null)

{

err += GetExceptionMessage(ex.InnerException);

}


return err;

}

}


사용)

Global.asax 파일에 전역 예외처리 로그 작성(try catch 잡지 않은 예외를 로그파일에 출력)

public class Global : System.Web.HttpApplication

{


...

...

protected void Application_Error(object sender, EventArgs e)

{

// 예외 처리구간에서 예외가 나왔을때는 예외처리를 하지 않는다.

try

{

LogMgr.LastExceptionLog("Application_Error");

}

catch(Exception)

{

}

}

}


try catch 예외 처리 로그로 사용.

DBConn conn = new DBConn();

try

{

conn.Open();

conn.CreateCommand(sql);

conn.AddParam("@USER_CODE", userName);


SqlDataReader reader = conn.ExecuteReader();


if (reader.Read())

{

playername = reader["USER_NAME"].ToString();

ret = true;

}

}

catch (Exception e)

{

LogMgr.ExceptionLog(e);

}

finally

{

conn.Close();

}

return ret;


일반 로그로 사용.

LogMgr.Log("하이 로그 테스트");


ASP.NET 에서 돌아가는 스케줄러 구현


루트에 Global.aspx 생성

public class Global : System.Web.HttpApplication

{

protected void Application_Start(object sender, EventArgs e)

{

StartScheduler();

}


...

...


//////////////////////////////////////////////////////////////////////////

// 스케줄러 소스 시작

private static DateTime whenTaskLastRan = DateTime.Now; // 마지막 스케줄러가 실행된 시간


private void StartScheduler()

{

ThreadStart tsTask = new ThreadStart(ScheduleTaskLoop);

Thread MyTask = new Thread(tsTask);

MyTask.Start();

}


static void ScheduleTaskLoop()

{

while (true)

{

DateTime oneDayAgo = DateTime.Now.AddDays(-1);


// 하루가 지났으면(새벽 4~ 6사이)

if ((whenTaskLastRan < oneDayAgo) && (4 <= oneDayAgo.Hour && oneDayAgo.Hour <= 6))

{

if(ScheduledTask())

whenTaskLastRan = DateTime.Now;

}

// 한시간 동안 Sleep

System.Threading.Thread.Sleep(TimeSpan.FromHours(1));

}

}


static bool ScheduledTask()

{

bool ret = false;

try

{

// DoSomething... 스케줄 걸 작업들.

ret = true;

}

catch (Exception e)

{

}

return ret;

}


// 스케줄러 소스 종료

//////////////////////////////////////////////////////////////////////////

}


}


1. MSSQL에서 CustomMemberShip Database 생성및 계정 추가


2. cmd 실행

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319>

aspnet_regsql.exe


DB 이름 선택, 연결 하여 끝냄


3. web.config 설정


<configuration>

  <connectionStrings>

    <add name="ConnectionString" 

connectionString="server=SERVERNAME;

database=CustomMembership;uid=userid;password=userpassword;"/>

  </connectionStrings>

  <system.web>

<roleManager defaultProvider="CustomProvider" enabled="true">

<providers>

<add connectionStringName="ConnectionString" 

name="CustomProvider"

type="System.Web.Security.SqlRoleProvider" />

</providers>

</roleManager>


<membership defaultProvider="CustomMembershipProvider">

<providers>

<add name="CustomMembershipProvider"

type="System.Web.Security.SqlMembershipProvider"

connectionStringName="ConnectionString" />

</providers>

</membership>



참고 URL : http://blog.naver.com/PostView.nhn?blogId=knight50&logNo=80101563731&redirect=Dlog&widgetTypeCall=true

1. 빌드 & publish 
  


 


 d:\tmp\bak 로 소스 출력됨


2. 컴파일

aspnet_compiler.exe -p d:\tmp\bak -v / d:\tmp\bak1 -errorstack

 입력 d:\tmp\bak -->  출력 d:\tmp\bak1
 



  C:\> C:
  C:\>cd \Windows\Microsoft.NET\Framework64\v4.0.30319
  C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_compiler.exe -p d:\tmp\bak -v / d:\tmp\bak1 -errorstack
  Utility to precompile an ASP.NET application
  Copyright (C) Microsoft Corporation. All rights reserved.

  C:\Windows\Microsoft.NET\Framework64\v4.0.30319>

3 배포
 d:\tmp\bak1 --> 웹사이트에 배포함.
 


+ Recent posts