참으로 좋은 언어 

구글이 선정한 언어

파이썬

21세기 플머들아 

꼭 배워야 하는 언어 3가지를 c/c++, java, 파이썬 그중

내가 지금 공부하고 있는 언어는 파이썬

공부라? 공부는 아니지 그냥 재미로 하는거니까...


아참 object-c도 짬짬히 하고 있는데 ㅋㅋ

역시 대박언어다...


아 이런 젠장

에그를 읽어 버린거 같군

바로 kt가서 취소해야겠따. 젠장


아 너무 주제가 길었다.

다름이 아니구 오늘은 기초적인 문법편

for 문 if문에 대해서

알아보장


for문 사용법은 어느언어와 마찬가지로...

너무쉽다.


for i in range(2,10):

for j in range(1, 10):

print i * j,

print '\n'


자 보아라

파이썬에 위대함을 단 4줄로 구구단을 짜는 센스!


나 이거보고 파이썬 짜기 시작했어 너무 좋아

헤헤

너무 웃지 마라

이런식으로 웃는거 별로 인게 말이다.


두번째로 if문에 대해서 알아보장

a = 200

if a<100:

print 'hello'

elif a==200:

print 'hello world'

else:

print 'kimyongyeon hello world'

참 쉽죠잉?


역시 간결함에 다시한번 감동이다.

이런 언어가 객체지향언어에 인스턴스도 생성이 되고 생성자가 존재한다는게

말이 되나...

다음 시간에는 클래스를 한번 만들어 보장


아 정리를 좀 할려고 블러그를 잡았는데

정리는 안하고 예제만 보여준다.

그래도 예제로 풀어가는게 제일 좋다.


백날 말하면 뭐하나 한번 보는게 짱


저작자 표시
신고

'객체지향언어' 카테고리의 다른 글

파이썬 2부  (0) 2013.06.10
파이썬 1부  (0) 2013.06.09
삼성 애니프레임.  (0) 2013.05.31
클래스의 상속  (0) 2009.08.19
객체지향 - 유스케이스  (0) 2009.08.19

요즘 뭔가 깊이 빠지고 싶어서 파이썬을 공부하고 있다.


비록 시작은 허접해도 끝은 창대하느라...



얼마나 아름다운가...

배열을 선언해서 사용할수 있다.

이건 어떤 언어도 마찬가지다.

하지만 여기서 주목할 것은 구간 출력이다.


다른언어에서는 컬렉션을 이용하거나, 또한 리스트를 사용해야 하는데

파이썬은 배열에서 구간이 출력된다.


점점 놀래고 있다.


파이썬에는 튜플, 사전, 리스트가 존재한다.

이 모든 테이터타입은 값을 저장하고 출력하는데 유용하게 사용할 수 있는 변수인데...

써보면 진짜 환상이다.


왜 파이썬을 공부해야 하는지 깨달을 수 있다.


저작자 표시
신고

'객체지향언어' 카테고리의 다른 글

파이썬 2부  (0) 2013.06.10
파이썬 1부  (0) 2013.06.09
삼성 애니프레임.  (0) 2013.05.31
클래스의 상속  (0) 2009.08.19
객체지향 - 유스케이스  (0) 2009.08.19

오늘은 본인이 회사에서 사용하는 AnyFrame에 대해서 간단히 적어본다.

본인은 현재 제1 금융권에서 회계업무를 하고 있다.

회계업무라는것을 첨으로 하기 시작했는데 본래 프리랜서는 금융업무를 하지 않으면 들어오기 힘든찬스 였지만 낙하산? 선배의 조언으로 시작하게 되었다.


일절 글이 너무 길어진것 같다. 본론부터 말하지만, anyframe 자체는 너무 쓰레기다. 버그도 많고, 에러도 많다. 이런 쓰레기 제품을 사용하는 삼성SDS가 너무 웃기다.


이건 어설픈 spring 기반도 mvc모델 방식도 아닌 뭐또 아닌꼴이다... 쩝

왜케 만든진 몰겠지만 너무 사람 피곤하게 만든다.


하루몇번씩 소스를 갈아치우는지 모르겠다. 생각 또 생각을 하고 만들어야 한다. 본디 내 생각은 회사에서는 예술보다 작품보다 상품을 찍어야 하는데 이건 뭐 생각을 하다보면 복사 + 붙여넣기 신공도 발휘하기 힘드니 참 거지같다.


구조는 대충

service, service impl, biz, dao, vo 구조로 되어 있는데 이건모...

dao에서 쿼리를 자동생성해 주는 기능은 있지만 자동생성까지는 매우 만족한다. 아니 신세계였다. 이런 기능이...

하지만 자동으로 생성하다 보니 똑같은 이름에 컬럼이나 변수가 여러개의 매소드에서 겹쳐서 나오면 이런 자바 파일 젠장 구분을 못하는 빙신이 된다. ㅠㅠ


또한, VO도 자동으로 생성이 된다. 여기서는 DVO라는 패키지에 담기게 되더군 이건 자동생성이 되는거라고 하더군.. 그러나 이것도 문제가 많다. 사람이 손이 아주 많이 간다. 본디 프레임을 쓰는 이유는 빠른 생산성과 자동화 인데 이건 손이 두배로 가는것 같다.


요즘은 화면을 거의 찍어내야 하는데 너무 지체 된다.

집중해서 하나를 찍을려 하면 여러가지를 생각하게 만드니 걱정이 이중삼중으로 든다.


화면은 우리쪽에서는 NCRM이라는 툴을 사용하는데 UI툴이라고 하는데 진짜 거지같이 버그가 많고 에러도 많아 심지어 파일도 저장이 잘 안되고, 가끔 꺼지기 까지 해 너무 짜증나! 이제까지 내가 만든거 돌리줘~


아참 NRCM은 자바스크립트와 html문서를 보다 편리하게 만들수 있도록 구성하는 툴인것 같아 다른쪽에서는 miflatform이나 xflatform으로 개발한다면 여긴 거지같은 ncrm으이라는 툴로 사용하는 것 같아! 너희들도 한번 써봐 욕나온다.


오늘은 여기까지 할래 너무 잠와 담에 와서 또 써줄게 아참

나 요즘 맥 공부하는데 너무 이해안돼 누가 나좀 도와줄사람 나 맥 개발하고 싶어 미치겠단 말이야 정확하게 아이폰, 아이패드 개발하고 싶어 그냥 단순한거라도 만들어보고 싶어 내손으로 말이야


난 원래 안드로이드는 혼자서 개발하는데 아이폰은 짬짬히 공부해서 해볼려고 했는데 무지 이해안돼 문법이 왜케 여긴 지랄같오!


아오

끝으로 술좀 끊어야 하는데 술어떻게하면 끊을수 있어? 바뻐야 해? 아님 그냥 기분이 안좋아야해?


알려줘~~~

슝슝


저작자 표시
신고

'객체지향언어' 카테고리의 다른 글

파이썬 2부  (0) 2013.06.10
파이썬 1부  (0) 2013.06.09
삼성 애니프레임.  (0) 2013.05.31
클래스의 상속  (0) 2009.08.19
객체지향 - 유스케이스  (0) 2009.08.19

- AntiStroy 님의 블러그에서 퍼왔음을 알립니다.

프로젝트를 진행하면서 JNI에 대해 알게 되었었다. Java에서 C함수를 호출하거나 C에서 Java의 메소드를 호출할 때 사용하는 것인데, 안드로이드 공부를 하다가 조금 더 파고들게 되었다. 

* 안드로이드는 자바로 프로그래밍을 하는데 왜 JNI에 대해 알아야 할까?
우선 안드로이드 플랫폼은 순수하게 Java로만 구성되어진 것이 아닌 Java 레이어와 C/C++레이어가 서로 상호 작용하면서 동작한다. 이 두 레이어가 유기적으로 동작하게 만들려면 JNI에 대해 알아야 한다. 
그리고 일반적으로 Java는 C/C++에 비해 느리다. 성능이 중요할 경우 C/C++로 작성하고 이를 JNI를 통해 Java에서 호출할 수 있다.

* NDK(Native Development Kit)
안드로이드 애플리케이션에서 사용할 네이티브 라이브러리를 작성하기 위한 도구 모음.
실제로 모듈을 구현하기 위해서는 JNI에 대한 지식 필요

* JNI의 개발 순서
1. Java 코드 작성
2. Java 코드 컴파일
3. C 헤더 파일 생성
4. C 코드 작성
5. C 공유 라이브러리 생성
6. Java 프로그램 실행

1. Java 코드 작성


public class AtinJNI {
// 네이티브 메소드 선언 
native void printAtin();
native void printString(String str);
  // 라이브러리 로딩
static {System.loadLibrary("atinjni");}
public static void main(String args[]){
AtinJNI myJNI = new AtinJNI();
  // 네이티브 메소드 호출
myJNI.printAtin();
myJNI.printString("Hello Atin");
}
}

[Source 1] AtinJNI.java

[표 1] 플랫폼별 System.loadLibrary() 메소드가 로딩하는 C라이브러리 형식
 호스트 플랫폼  실제 로드되는 C 라이브러리 
 Window   libname.dll 
 Linux   libname.so 


2. Java 코드 컴파일
javac를 통해서 .java파일을 .class로 컴파일한다.
 javac AtinJNI.java

위와 같은 명령을 실행할 경우 아무 에러가 나지 않는다면 .class로 컴파일 된 것이다.

3. C 헤더 파일 생성
이제 Java 소스를 만들었으니 C 소스를 짜야 한다. 그런데 중요한 점은 어떻게 Java에서 호출되는 C 소스를 짤 것인가이다. 이것을 위해 javah라는 툴이 있다. 이 툴을 사용하면 .class파일을 파싱해서 만들어야 할 C 함수의 헤더를 만들어준다. 

javah <native로 선언된 메소드를 포함한 자바 클래스명>
- <JDK_HOME>\bin에 포함.
- Java 네이티브 메소드와 연결될 수 있는 C함수의 원형 생성

 javah AtinJNI
위와 같은 명령어를 실행하면 AtinJNI.h라는 헤더 파일이 생성됀다.

내용은 아래와 같다.

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class AtinJNI */

#ifndef _Included_AtinJNI
#define _Included_AtinJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     AtinJNI
 * Method:    printHello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_AtinJNI_printHello
  (JNIEnv *, jobject);

/*
 * Class:     AtinJNI
 * Method:    printString
 * Signature: (Ljava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_AtinJNI_printString
  (JNIEnv *, jobject, jstring);

#ifdef __cplusplus
}
#endif
#endif

[Source 2] AtinJNI.h

4. C 코드 작성
위에서 생성한 AtinJNI.h의 헤더를 기준으로 C 소스를 작성하면 됀다. 


#include "HelloJNI.h"
#include <stdio.h>

JNIEXPORT void JNICALL Java_AtinJNI_printAtin
  (JNIEnv *env, jobject obj)
{
printf("Hello Atin \n");
return;
}

JNIEXPORT void JNICALL Java_AtinJNI_printString
  (JNIEnv *env, jobject obj, jstring string)
{
const char *str = (*env)->GetStringUTFChars(env, string, 0);
printf("%s! \n", str);
return;
}

[Source 3] atinjni.c

5. C 공유 라이브러리 생성
중요한건 Window는 dll, Linux는 so파일을 만들어야 한다. 책에서는 C 소스를 작성 후 cl명령을 통해 dll을 만들었다.

cl 명령은 Visual Studio 2008 명령 프롬프트에서 실행해야 하며 VC 2008 Express Editions(http://www.microsoft.com/express/download/)가 설치되어 있어야 한다.

cl -I"<JDK_HOME>\include" -I"<JDK_HOME>\include\win32" -LD atinjni.c -Featinjni.dll
cl : vc++ 컴파일 명령어
-I<dir> : 헤더 파일을 검색할 디렉토리 경로 <dir> 추가
-LD : DLL 생성
-FE<파일명> : 컴파일 결과 파일 이름 지정

나는 VC에서 직접하고 싶어서 [1]과 같이 dll을 만들었다.
그런데 다음과 같은 문제에 직면했다.


Can't load IA 32-bit .dll on a AMD 64-bit platform
그래. 나는 64비트용 윈도우 7 운영체제였다. 32비트 dll이 문제가 되는 것이었다. 구글링해보니 32비트용으로 Java를 다시 까니 실행 명령어에 옵션을 주는 몇 방법들이 있었는데 마음에 들지 않았다. dll을 64비트용으로 하면 될 것 같았다. 그래서 [2]와 같은 방법으로 dll을 64비트용으로 만들어주었고 문제를 해결했다.

6. Java 프로그램 실행
이클립스라면 그냥 실행하면 되고 콘솔에서라면 "java AtinJNI"로 실행하면 결과를 볼 수 있다.

Reference
[1] VC에서 DLL 만드는 방법 (http://sol9501.blog.me/70102942944)
[2] 64비트용 컴파일 (http://blog.naver.com/PostView.nhn?blogId=honnak&logNo=70085595801&viewDate=&currentPage=1&listtype=0
[3] 인사이드 안드로이드(Inside the Android Framework, 위키북스)


저작자 표시
신고
객체지향은 4가지의 특성이 있었다.
하나. 상속성
둘. 다양성
셋. 캡슐화
넷. 정보은닉.
자바에서 말이다.

상속성 : 상속은 부모에서 자식으로, 자식에서 자식으로, 강제형변환, 자동형변환 등등...
다양성 : 여러가지 기능을 호출할 수 있다.
캡슐화 : 기능을 하나로 묻는것.
정보은닉 : 보호하고 싶은 멤버변수를 타클래스에서 볼 수 없게 만든다.

이상.
오늘 배운것을 정리해본다.

수스 안드로이드 2기 수강생~~

저작자 표시
신고
소스를 적는다. 헤헤
컴파일을 하고 아래와 같이 정상적으로 찍히는지 확인한다.
아 역시 기초가 탄탄해야 실력도 쑥쑥이얌~
아자아자 화이팅

저작자 표시
신고
db와 연동하는 방법은 두가지 있다.
하나는 odbc를 이용한 방법과 다른 하나는 oledb를 이용하는 방법인데 오늘시간에 연설할 내용은
두번째 방법이다.
oledb로 연결하기위해서는 mysql 홈페이지를 접속하여 connect 드라이버를 받아야 한다.
그리고 아래와 같이 네임스페이스를 추가한다.
Imports MySql.Data.MySqlClient 'oledb를 이용하기 위한 네임스페이스 추가.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        '================================================
        ' 데이터베이스 연결 
        '================================================
        If Not conn Is Nothing Then conn.Close()
        Dim connStr As String
        connStr = String.Format("server=localhost;user id=아이디; password=비번; database=데이터베이스명; pooling=false")
        Try
            conn = New MySqlConnection(connStr)
            conn.Open()
            TextBox1.Text = "데이터베이스 연결성공"
            GetDatabases()
        Catch ex As MySqlException
            MessageBox.Show("Error connecting to the server: " + ex.Message)
            TextBox1.Text = "데이터베이스 연결실패"
        End Try
    End Sub

    Private Sub GetDatabases()
        Dim reader As MySqlDataReader
        reader = Nothing
        Dim sql As String = "SELECT name From test;"
        Dim cmd As New MySqlCommand(sql, conn)
        Try
            reader = cmd.ExecuteReader()
            'databaseList.Items.Clear()

            While (reader.Read())
                'databaseList.Items.Add(reader.GetString(0))
                MsgBox(reader.GetString(0))
            End While
        Catch ex As MySqlException
            MessageBox.Show("Failed to populate database list: " + ex.Message)
        Finally
            If Not reader Is Nothing Then reader.Close()
            MsgBox("데이터가 없습니다.")
            conn.Close()
        End Try

    End Sub

이소스는 사실 mysql에서 제공되는 소스이다. 천천히 보면 누구나 따라할 수 있다. 연결하는 부분부터 연결끊는부분까지 자세하게 소스가 정의되어 있기 때문이다.
이소스를 조금 응용하면 테이블 추가및 삭제 수정 조회 기능을 구현할 수 있다. 

저작자 표시
신고
간만에 프로그램을 만들다
제작언어 : vb.net 2008


로그인 화면이다.



메인화면

대학생이라면 듣고싶은 과목 인원이 차면 듣지 못하여서 별에별 짓을 다하는데 심심해서 post 데이터 분석해서 vb로 만들어 보았다. 이제까지 테스트 해보았는데 아주 잘 된다.


저작자 표시
신고

간만에 자바를 이용하여 프로그래밍 공부를 하였다. 후배의 부탁으로 jsp와 서블릿으로 자바를 처음 접하고나서 처음으로 제대로 공부해 보기 위해 책도 구입해서 열공하면서 오늘 코딩한 내용을 붙여넣기 해 본다.
내가 생각해도 오늘은 너무 무리하게 진도를 나간것 같다. 확실히 C언어를 먼저 선행학습해서 그런지 함수사용방법이나 함수선언, 문법 등은 기본가락이 있어서 그냥 넘어갔다. 또한 C++, C#, VB.NET으로 여러 프로젝트를 진행했던지라 그닥 객체지향 쪽도 어렵지 않게 수행할 수 있었다. 오늘 사실 책 전체를 다 봤다. 낼은 시간이 남으면 JFrame 쪽을 공부해야 겠다. 사실 JFrame을 해야 진짜 윈도우프로그램 다운걸 만들지 이런 콘솔은 통신외에는 써먹을때도 없다. 기본로직은 모든 언어와 마찬가지로 비슷하기 때문에 문법만 조금 틀어지기 때문이다. 사실 통신도 C언어나 C++ 만들어서 사용을 마니 하기 때문에 통신부분도 그닥 마음에 들진 않지만 그래도 자바를 공부하고 준비된 모습으로 어디를 가든 자신이 붙을려면 해야 한다고 생각해서 이렇게 작성하고 또 만들어 봐야 겠다. 여러가지 예외사항이나 변수들이 많을꺼라 생각하지만 책에 있는것을 치는것인데 설마 어려울까...

public class IfLeapYear {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  for(int year=1998;year<2006;year++){
   boolean yearTF = false;
   if((0==(year%4)&&0!=(year%100))||0==year%400){
    yearTF = true;
   }else{
    yearTF = false;
   }
   
   if(yearTF){
    System.out.println(year+"는 윤년입니다.");
   }else{
    System.out.println(year+"는 윤년이 아닙니다.");
   }
  }//for

 }

}

import javax.swing.*;
import java.awt.*;
public class Hello4Applet extends JApplet{
 private static final long serialVersionUID=122454214237L;
 public void init(){
  
 }
 public void start(){
  
 }
 public void paint(Graphics g){
  super.paint(g); // 습관적으로 쓰자
  g.drawString("안녕하세요", 50, 50);
 }
}


public class FiveOperation {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int ia=20;
  int ib=67;
  
  double da=69.67;
  double db=34;
  int iResultA=ia+ib;
  int iResultB=ia-ib;
  int iResultC=ia*ib;
  int iResultD=ia/ib;
  int iResultE=ia%ib;
  
  System.out.println("1:"+iResultA);
  System.out.println("2:"+iResultB);
  System.out.println("3:"+iResultC);
  System.out.println("4:"+iResultD);
  System.out.println("5:"+iResultE);
  
  double dResultA=da/db;
  double dResultB=da%db;
  double dc=(da-db*((int)(da/db)));
  System.out.println("6:"+dResultA);
  System.out.println("7:"+dResultB);
  System.out.println("8:"+dc);
  
  int even=4%2;
  int odd=5%2;
  System.out.println("9:"+even);
  System.out.println("9:"+odd);
  
 }

}

import java.util.*;
public class PrintTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int a=20;
  long b=30000L;
  float c=34.98F;
  double d=234.234;
  char e='k';
  Calendar today=Calendar.getInstance();
  System.out.println("1:"+a+""+b+""+c+""+d+""+e);
  System.out.printf("2: \\ %% %d %d %f %f %c %n", a,b,c,d,e);
  System.out.printf("today %1$tm %1te, %1$tY %n", today);
 }

}

저작자 표시
신고

학기초에 MFC를 공부하기 위해서 구입한 도서 인데
책 두께로 보거나 프리텍에 명성의 걸맞은 걸주간 책이 나왔다고 생각하고 그당시 학생신분에서는 꽤 큰돈으로 구입했었다.
학기초에는 시간도 나고 해서 공부를 첨에만 조금 했다가 최근들어 소켓통신 공부좀 해볼려고 책을 펼쳐서
뒷장으로 넘어가서 보는데 이건모 어다르고 아 다르다고, 원래 책을 보면서 코딩을 하면 쭈~~욱 쳐 내려가면서 이해하고 칠수 있을정도로 책을 지필해야 하는데 이건모 완전 순서도 엉켜져 있고, 초보들이 따라치다가는 날샐꺼 같다. 비록 본인은 MFC를 조금 해봐서 이리저리 앞뒤로 책을 넘겨보면서 쳐서 완성은 했지만 그래도 이건 아니다 쉽다.
책의 순서가 이렇게 엉켜 있음 어떻게 독자가 보란 말인가?
반성해 하자.

더보기

문제의 발단은 위에서 굵게 선언된 맴버함수를 사용하기 위해서 부터다. 책을 쭈욱 치고 갔지만 위에서와 같이 인텔리전스가 나오질 않아서 당황했다. 뒷장을 계속 찾아보아서 아래와 같은 코드를 찾을수 있었다. CClientSocket 클래스에서 맴버함수를 만들어 넣지도 않고 위에 코드가 먼저 설명이 나온것이다.

더보기

아 정말 어이없다. 이것때문에 시간 낭비하는 사람들을 위해서 구글링했을때 쉽게 찾을수 있도록 기록으로 남겨 둔다.

저작자 표시
신고