아내 친구가


학군 변경되는 시점에 고점에 팔고, 새로운데로 이사갔다는데

반대로 생각해보니...


요즘 출산률은 바닥을 찍고 있고

급속도로 인구가 깔대기 모양을 찍고 있는데

지금 우리 아이가 고등학교 학군을 중요시 여길 시점에는 (그러니까 한 10년 이후?)

교사가 학생보다 많아지고

일부 대도시를 제외하면 학교가 통폐합 당해서

결국에는 학군의 의미 자체가 사라지지 않을까?


그리고 그에 따라 학군의 프리미엄이 사라지니

(물론 등하교 문제로 인한 약간의 프리미엄은 있겠지만)

그에 따른 집값 하락도 추가도 발생하지 않을까?


그리고 학생수가 줄어드니

학교에서 등하교 지원을 하게 될지도?

(워낙 먼데서 부터 와야 하는데 교사는 남아 도니까?)

Posted by 구차니
embeded/i2c2018. 4. 26. 12:31

데이터시트 내용중에

Four I2C modes
– Master transmit
– Master receive
– Slave transmit
– Slave receive 
 

요런게 보이는데, 풀어 쓰다면

마스터 모드 - master가 slave로 전송 / slave가 master로 부터 받기

마스터 모드 - slave가 master로 전송 / master가 slave로 부터 받기

슬레이브 모드 - slave가 master로 전송 / master가 slave로 부터 받기

슬레이브 모드 - master가 slave로 전송 / slave가 master로 부터 받기 

요렇게 해석이 가능하다.


I2C 통신은 아래와 같이 이루어 지는데 Master에 의해서 SCL이 생성되고
마스터에 의해서 통신이 시작되고(START)

마스터가 쓰는 데이터 = 통신할 slave의 주소 + Read/Write(혹은 Receive/Send) 

슬레이브의 응답 = ACK
마스터가 쓰는 데이터 = slave의 register 주소
슬레이브의 응답 = ACK
마스터가 쓰는 데이터 = register의 data
슬레이브의 응답 = ACK

마스터에 의해서 통신이 종료되게 된다.(STOP)


 

I2C 레지스터 관련 내용 





Driverlib에 정의된 내용

#define I2C_MASTER_CMD_SINGLE_SEND                                            \

                                0x00000007

#define I2C_MASTER_CMD_SINGLE_RECEIVE                                         \

                                0x00000007

#define I2C_MASTER_CMD_BURST_SEND_START                                       \

                                0x00000003

#define I2C_MASTER_CMD_BURST_SEND_CONT                                        \

                                0x00000001

#define I2C_MASTER_CMD_BURST_SEND_FINISH                                      \

                                0x00000005

#define I2C_MASTER_CMD_BURST_SEND_STOP                                        \

                                0x00000004

#define I2C_MASTER_CMD_BURST_SEND_ERROR_STOP                                  \

                                0x00000004

#define I2C_MASTER_CMD_BURST_RECEIVE_START                                    \

                                0x0000000b

#define I2C_MASTER_CMD_BURST_RECEIVE_CONT                                     \

                                0x00000009

#define I2C_MASTER_CMD_BURST_RECEIVE_FINISH                                   \

                                0x00000005

#define I2C_MASTER_CMD_BURST_RECEIVE_ERROR_STOP                               \

                                0x00000004

#define I2C_MASTER_CMD_QUICK_COMMAND                                          \

                                0x00000027

#define I2C_MASTER_CMD_HS_MASTER_CODE_SEND                                    \

                                0x00000013

#define I2C_MASTER_CMD_FIFO_SINGLE_SEND                                       \

                                0x00000046

#define I2C_MASTER_CMD_FIFO_SINGLE_RECEIVE                                    \

                                0x00000046

#define I2C_MASTER_CMD_FIFO_BURST_SEND_START                                  \

                                0x00000042

#define I2C_MASTER_CMD_FIFO_BURST_SEND_CONT                                   \

                                0x00000040

#define I2C_MASTER_CMD_FIFO_BURST_SEND_FINISH                                 \

                                0x00000044

#define I2C_MASTER_CMD_FIFO_BURST_SEND_ERROR_STOP                             \

                                0x00000004

#define I2C_MASTER_CMD_FIFO_BURST_RECEIVE_START                               \

                                0x0000004a

#define I2C_MASTER_CMD_FIFO_BURST_RECEIVE_CONT                                \

                                0x00000048

#define I2C_MASTER_CMD_FIFO_BURST_RECEIVE_FINISH                              \

                                0x00000044

#define I2C_MASTER_CMD_FIFO_BURST_RECEIVE_ERROR_STOP                          \

                                0x00000004


#define I2C_O_MCS               0x00000004  // I2C Master Control/Status 


void

I2CMasterControl(uint32_t ui32Base, uint32_t ui32Cmd)

{

    //

    // Check the arguments.

    //

    ASSERT(_I2CBaseValid(ui32Base));

    ASSERT((ui32Cmd == I2C_MASTER_CMD_SINGLE_SEND) ||

           (ui32Cmd == I2C_MASTER_CMD_SINGLE_RECEIVE) ||

           (ui32Cmd == I2C_MASTER_CMD_BURST_SEND_START) ||

           (ui32Cmd == I2C_MASTER_CMD_BURST_SEND_CONT) ||

           (ui32Cmd == I2C_MASTER_CMD_BURST_SEND_FINISH) ||

           (ui32Cmd == I2C_MASTER_CMD_BURST_SEND_ERROR_STOP) ||

           (ui32Cmd == I2C_MASTER_CMD_BURST_RECEIVE_START) ||

           (ui32Cmd == I2C_MASTER_CMD_BURST_RECEIVE_CONT) ||

           (ui32Cmd == I2C_MASTER_CMD_BURST_RECEIVE_FINISH) ||

           (ui32Cmd == I2C_MASTER_CMD_BURST_RECEIVE_ERROR_STOP) ||

           (ui32Cmd == I2C_MASTER_CMD_QUICK_COMMAND) ||

           (ui32Cmd == I2C_MASTER_CMD_FIFO_SINGLE_SEND) ||

           (ui32Cmd == I2C_MASTER_CMD_FIFO_SINGLE_RECEIVE) ||

           (ui32Cmd == I2C_MASTER_CMD_FIFO_BURST_SEND_START) ||

           (ui32Cmd == I2C_MASTER_CMD_FIFO_BURST_SEND_CONT) ||

           (ui32Cmd == I2C_MASTER_CMD_FIFO_BURST_SEND_FINISH) ||

           (ui32Cmd == I2C_MASTER_CMD_FIFO_BURST_SEND_ERROR_STOP) ||

           (ui32Cmd == I2C_MASTER_CMD_FIFO_BURST_RECEIVE_START) ||

           (ui32Cmd == I2C_MASTER_CMD_FIFO_BURST_RECEIVE_CONT) ||

           (ui32Cmd == I2C_MASTER_CMD_FIFO_BURST_RECEIVE_FINISH) ||

           (ui32Cmd == I2C_MASTER_CMD_FIFO_BURST_RECEIVE_ERROR_STOP) ||

           (ui32Cmd == I2C_MASTER_CMD_HS_MASTER_CODE_SEND));


    //

    // Send the command.

    //

    HWREG(ui32Base + I2C_O_MCS) = ui32Cmd;



값대로 정렬하면 아래처럼 나오는데

CONT 0x01

START 0x03

STOP 0x04

FINISH 0x05

_SINGLE_ 0x07

로 끝나게 된다.


I2C_MASTER_CMD_BURST_SEND_CONT 0x00000001


I2C_MASTER_CMD_BURST_SEND_START 0x00000003


I2C_MASTER_CMD_BURST_SEND_STOP 0x00000004

I2C_MASTER_CMD_BURST_SEND_ERROR_STOP 0x00000004

I2C_MASTER_CMD_BURST_RECEIVE_ERROR_STOP 0x00000004

I2C_MASTER_CMD_FIFO_BURST_SEND_ERROR_STOP 0x00000004

I2C_MASTER_CMD_FIFO_BURST_RECEIVE_ERROR_STOP 0x00000004


I2C_MASTER_CMD_BURST_SEND_FINISH 0x00000005

I2C_MASTER_CMD_BURST_RECEIVE_FINISH 0x00000005


I2C_MASTER_CMD_SINGLE_SEND 0x00000007

I2C_MASTER_CMD_SINGLE_RECEIVE 0x00000007


I2C_MASTER_CMD_BURST_RECEIVE_CONT 0x00000009

I2C_MASTER_CMD_BURST_RECEIVE_START 0x0000000b


I2C_MASTER_CMD_HS_MASTER_CODE_SEND 0x00000013


I2C_MASTER_CMD_QUICK_COMMAND 0x00000027

I2C_MASTER_CMD_FIFO_BURST_SEND_CONT 0x00000040

I2C_MASTER_CMD_FIFO_BURST_SEND_START 0x00000042

I2C_MASTER_CMD_FIFO_BURST_SEND_FINISH 0x00000044

I2C_MASTER_CMD_FIFO_BURST_RECEIVE_FINISH 0x00000044

I2C_MASTER_CMD_FIFO_SINGLE_SEND 0x00000046

I2C_MASTER_CMD_FIFO_SINGLE_RECEIVE 0x00000046

I2C_MASTER_CMD_FIFO_BURST_RECEIVE_CONT 0x00000048

I2C_MASTER_CMD_FIFO_BURST_RECEIVE_START 0x0000004a 



+

데이터시트에는 존재하지 않는 오프셋 주소다.. ㄷㄷ

burst mode랑 multibyte랑 다른거 같긴한데 모르겠네..

#define I2C_O_MBLEN             0x00000030  // I2C Master Burst Length

#define I2C_O_MBCNT             0x00000034  // I2C Master Burst Count 


I2CMCS에 write 레지스터는.. 0x10까지만 공개되어 있네?

#define I2C_MCS_BURST           0x00000040  // Burst Enable 


공개가 안된건.. 해당 칩셋에서는 burst mode 사용불가인거 겠지?



state라고 하긴 애매한데

idle(통신을 잡지 않은 상태)

start (SDA,SCL Low, 통신 시작)

transmit(address LSB에 Write)

receive(address LSB에 Read)

stop (통신을 놓음)

repeat start(통신을 놓지 않고 다른 장치나 주소로 통신)

run (ACK 이후에 stop이나 transmit/recieve로 가는 상태)


이러한 상태들이 존재하게 된다.

그림으로 그리려니 참 애매해지네


그런 이유로... i2c 구현시에 함수들이 uart 처럼 단순하지 않고

토막토막 나있는 것으로 보인다.


I2CMasterControl()은

i2c driver의 state machine을 통제하고

i2c 로직에서는

장치 주소와, 데이터를 가지고 있고

state machine의 값을 이용해

어떤식으로 데이터를 보낼지 결정하게 된다.

(그래서 더 복잡한 듯)


+

2018.04.27

그러니까.. 1 byte를 기준으로 보내는데

바이트 별로 설정을 해줘야하고

그 설정에 통신을 끝낼지 이어서 전송을 할게 있는지를 설정해주는게 은근복잡했던 것..

'embeded > i2c' 카테고리의 다른 글

linux i2c 예제  (0) 2022.12.27
i2c 자료  (0) 2018.04.26
i2c BUS에 pull-up, pull-down  (0) 2018.04.26
i2c bank switching  (0) 2015.09.02
i2c 정리  (4) 2012.01.10
Posted by 구차니
embeded/i2c2018. 4. 26. 12:27

MCU 데이터시트를 보다보니 신기한거(?) 발견

I2C 에서 SCL/SDA에 둘다 풀업이 걸려있다.


그리고 HIGH->LOW로 가면서 통신이 이루어지게 된다.


혹시나 해서 봤는데..

UART 역시 TX 기준 HIGH에서 LOW로 떨어트린 다음 시작하게 된다.


SSI는... LOW에서 HIGH 가네?




아무튼 얼추 주워들은 이야기라 근거, 출처를 아직 못 찾아 봤지만

어떤 의미로 통신은

한쪽에서 전압을 떨구거나 올리는 스위치를 통해 이뤄지는 것이라 pull-up, pull-down이 중요하다고 한다.


I2C의 경우에는 Pull-up으로 통신라인이 구성되고

데이터를 보내기 위해서는 I2C Driver에서 내부적으로 GND로 돌려주는 작업을 하면 

BUS 라인내에서 간단하게 Logical 0과 1을 표현할 수 있고

받는 쪽에서도 rising edge나 falling edge를 탐지하면 인터럽트로 처리가 가능하니

통신이란 거진 이런 양상을 뛰는 걸지도?


SSI같이 Low에서 High로 가는건

Pull-down으로 구성하고, 드라이버 내에서 logical 1을 표현시에는

Driver에 인가되는 Vcc를 스위칭 해주는 것으로 구현될 것으로 추측된다.

'embeded > i2c' 카테고리의 다른 글

i2c 자료  (0) 2018.04.26
i2c mode - tm4c  (0) 2018.04.26
i2c bank switching  (0) 2015.09.02
i2c 정리  (4) 2012.01.10
I2C  (2) 2011.11.28
Posted by 구차니

누나가 쓰고 있다고 추천해줌..

고려해봐야지


KB 파인테크

[링크 : https://card.kbcard.com/CXPRICAC0076.cms?mainCC=a&cooperationcode=04580]


KB 다담

[링크 : https://card.kbcard.com/CXPRICAC0076.cms?mainCC=a&cooperationcode=09169]

'개소리 왈왈 > 직딩의 비애' 카테고리의 다른 글

어제 장거리 외근... 기아 레이 밴  (0) 2018.05.01
침 넘기기 힘들어서 어제 약을 사러 갔던 썰  (4) 2018.04.26
아 일하기 싫다  (0) 2018.03.22
왕피곤..  (0) 2018.03.17
배터리 방전  (0) 2018.03.14
Posted by 구차니
Programming/openGL2018. 4. 25. 09:56

어디였나.. 뷰포트로 두개 하면 된다고 하는데

예전에 내가 스테레오 비전 만든것도 뷰포트였나? 기억이 안나네..


GLvoid display(GLvoid)

{

  glDrawBuffer(GL_BACK);                                   //draw into both back buffers

  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);      //clear color and depth buffers


  glDrawBuffer(GL_BACK_LEFT);                              //draw into back left buffer

  glMatrixMode(GL_MODELVIEW);

  glLoadIdentity();                                        //reset modelview matrix

  gluLookAt(-IOD/2,                                        //set camera position  x=-IOD/2

            0.0,                                           //                     y=0.0

            0.0,                                           //                     z=0.0

            0.0,                                           //set camera "look at" x=0.0

            0.0,                                           //                     y=0.0

            screenZ,                                       //                     z=screenplane

            0.0,                                           //set camera up vector x=0.0

            1.0,                                           //                     y=1.0

            0.0);                                          //                     z=0.0

  

  glPushMatrix();

  {

    glTranslatef(0.0, 0.0, depthZ);                        //translate to screenplane

    drawscene();

  }

  glPopMatrix();


  glDrawBuffer(GL_BACK_RIGHT);                             //draw into back right buffer

  glMatrixMode(GL_MODELVIEW);

  glLoadIdentity();                                        //reset modelview matrix

  gluLookAt(IOD/2, 0.0, 0.0, 0.0, 0.0, screenZ,            //as for left buffer with camera position at:

            0.0, 1.0, 0.0);                                //                     (IOD/2, 0.0, 0.0)


  glPushMatrix();

  {

    glTranslatef(0.0, 0.0, depthZ);                        //translate to screenplane

    drawscene();

  }

  glPopMatrix();

  

  glutSwapBuffers();

[링크 : http://www.orthostereo.com/geometryopengl.html]


The default framebuffer contains up to 4 color buffers, named GL_FRONT_LEFT, GL_BACK_LEFT, GL_FRONT_RIGHT, and GL_BACK_RIGHT. The left and right buffers are used for stereoscopic rendering

[링크 : https://www.khronos.org/opengl/wiki/Default_Framebuffer]



glulookat 쓴거 보면 맞는 듯?

기본 컨셉은 비슷한데 위에 예제는 openGL에서 스테레오 스코픽 지원 기능을 쓰고 있는 거군

void display(void)

{

glClear(GL_COLOR_BUFFER_BIT);


glMatrixMode(GL_MODELVIEW); //GL_PROJECTION

glPushMatrix();

glViewport(0, 0, 250, 250); 

gluLookAt(0.10, 0.0, 0.2, 0.0, 0.0, -2.0, 0.0, 1.0, 0.0);

draw_sin();

glPopMatrix();


glPushMatrix();

glViewport(250, 0, 250, 250); 

gluLookAt(0.2, 0.0, 0.2, 0.0, 0.0, -2.0, 0.0, 1.0, 0.0);

draw_sin();

glPopMatrix();


glutSwapBuffers();

2011/10/08 - [Programming/openGL] - openGL의 미스테리...

'Programming > openGL' 카테고리의 다른 글

glfw - gl framework  (0) 2019.05.07
openGL 3.0 tutorial  (0) 2019.05.07
openGL cardboard lens distortion  (0) 2018.04.25
glxgears 소스  (0) 2016.09.07
opencv opengl  (0) 2016.02.26
Posted by 구차니
Programming/openGL2018. 4. 25. 09:52

구글 카드보드 같은거 써서 보려면

영상을 왜곡해야 하는데(왜곡이란 단어부터 생각이 안남... ㅠㅠ)



[링크 : https://stackoverflow.com/questions/44489686/camera-lens-distortion-in-opengl]

[링크 : http://smus.com/vr-lens-distortion/]

[링크 : https://www.opengl.org/discussion_boards/showthread.php/197596-Pincushion-Distortion-with-a-Camera]


+

[링크 : https://github.com/googlevr/gvr-android-sdk/.../videoplayer/VideoScene.java]

[링크 : https://github.com/googlevr/gvr-android-sdk/.../videoplayer/VideoSceneRenderer.java]

[링크 : http://www.freevr.org/downloads.html]

[링크 : https://arm-software.github.io/vr-sdk-for-android/IntroductionToStereoRendering.html] <<<

https://support.google.com/cardboard/manufacturers/answer/6324808?hl=en

'Programming > openGL' 카테고리의 다른 글

openGL 3.0 tutorial  (0) 2019.05.07
openGL Stereoscopic  (0) 2018.04.25
glxgears 소스  (0) 2016.09.07
opencv opengl  (0) 2016.02.26
opengl camera의 이해  (0) 2016.02.02
Posted by 구차니
Programming/openCV2018. 4. 25. 08:44

Odroid U3를 두개 묶어 놓다 보니 든 생각..

한대에서 영상 두개를 받고(USB로)

그 이미지중 하나(그러니까 사람으로 치면 오른눈-오른눈잡이)를 본인이 처리하고

다른쪽 영상 하나를 다른 시스템으로 넘겨서 처리하거나


아니면 각각 하나의 영상을 받아서

처리 결과만 다른쪽으로 넘겨주면 어떨까?


적고 보니 후자가 더 안정적일 수도 있겠네


[링크 : http://pachyderm.readthedocs.io/en/latest/getting_started/beginner_tutorial.html]

'Programming > openCV' 카테고리의 다른 글

opencv cannyedge  (0) 2019.01.16
opencv 원 추정  (0) 2019.01.16
openCV release mode와 debug mode 속도 차이  (0) 2018.03.19
openCV multicore support  (0) 2018.03.19
stitch / opencv / python  (0) 2016.07.18
Posted by 구차니

I2C slave에서 마스터로 전송할 데이터가 생길 경우에는

폴링을 기다리거나, 마스터로 연결된 interrupt 핀이 있어야 한다.


Case 1: Slave has an interrupt pin


You need to connect this interrupt pin to master microcontroller. Every time the slave has some data, it should raise an interrupt. At that point, master will read the available data.


Case 2: Slave doesn't have an interrupt pin


Polling is the only option in this case. Master keeps reading all the slaves at regular interval and keeps comparing the received data with old one. If the data has changed, master will take appropriate action. You need to decide the interval according to your application. 

[링크 : https://electronics.stackexchange.com/questions/307630/slave-wants-to-send-data-to-master-in-i2c/307641]



다만 SMBUS에서는

slave가 mater 처럼 작동하여 호스트(0x08)에게 자신의 주소와 2바이트 정보는 던질 수 있도록 되어있다.

아니면 SMBALERT# 시그널을 통해 주의를 요청인데 이게 인터럽트 라인인 듯?

Arbitration in SMBus

Although conceptually a single-master bus, a slave device that supports the "host notify protocol" acts as a master to perform the notification. It seizes the bus and writes a 3-byte message to the reserved "SMBus Host" address (0x08), passing its address and two bytes of data. When two slaves try to notify the host at the same time, one of them will lose arbitration and need to retry.

An alternative slave notification system uses the separate SMBALERT# signal to request attention. In this case, the host performs a 1-byte read from the reserved "SMBus Alert Response Address" (0x0c), which is a kind of broadcast address. All alerting slaves respond with a data bytes containing their own address. When the slave successfully transmits its own address (winning arbitration against others) it stops raising that interrupt. In both this and the preceding case, arbitration ensures that one slave's message will be received, and the others will know they must retry.

SMBus also supports an "address resolution protocol", wherein devices return a 16-byte "universal device ID" (UDID). Multiple devices may respond; the one with the least UDID will win arbitration and be recognized. 

[링크 : http://www.microchip.com/forums/m/tm.aspx?m=795577&p=1]

'이론 관련 > 컴퓨터 관련' 카테고리의 다른 글

hdmi pinout  (0) 2018.05.29
VGA 관련 자료 검색중  (0) 2018.05.29
haze / defog  (0) 2018.03.19
USB class - DFU(Device Firmware Upgrade)  (0) 2017.12.26
불 대수(bool algebra)  (0) 2017.12.20
Posted by 구차니

GIT 쓸 일이 없다 보니..

일단 리눅스에서 개발하면서 한번 써보면 파악이 되겠지 머..


$ apt-cache search git | grep ^git

git - fast, scalable, distributed revision control system

git-core - fast, scalable, distributed revision control system (obsolete) 

git-all - fast, scalable, distributed revision control system (all subpackages)


step 1. 패키지 설치(안되어 있다면)

$ sudo apt-get install git 


step 2. git 설정

$ git config --global user.name "이름"

$ git config --global user.email "이메일주소"

$ git config --global color.ui "auto" 


step 3. 설정 내용 확인

$ git config --list

user.name=이름

user.email=이메일주소

color.ui=auto

$ vi ~/.gitconfig

[user]

        name = 이름

        email = 이메일주소

[color]

        ui = auto 


step 4. 저장소 생성

$ mkdir git_repo

$ cd git_repo

~/src/git_repo$ git init
초기화: 빈 깃 저장소, 위치 /home/odroid/src/git_repo/.git/ 
$ ll
합계 12
drwxrwxr-x 3 odroid odroid 4096  4월 24 15:56 ./
drwxrwxr-x 5 odroid odroid 4096  4월 24 16:08 ../
drwxrwxr-x 7 odroid odroid 4096  4월 24 15:56 .git/
$ du -h
8.0K    ./.git/info
44K     ./.git/hooks
4.0K    ./.git/objects/info
4.0K    ./.git/objects/pack
12K     ./.git/objects
4.0K    ./.git/branches
4.0K    ./.git/refs/heads
4.0K    ./.git/refs/tags
12K     ./.git/refs
96K     ./.git
100K    .


step 5. 저장소 복제
$ mkdir test
$ cd test
$ git clone ~/src/git_repo/
'git_repo'에 복제합니다...
warning: 빈 저장소를 복제한 것처럼 보입니다.
완료. 


[링크 : http://devaom.com/?p=745]

[링크 : https://git-scm.com/book/ko/v2/Git-서버-프로토콜]



+

bare를 주면 .git 아래 생성될게 바로 생성되는건가?

$ git init --bare --shared

초기화: 빈 공유 깃 저장소, 위치 /home/odroid/src/tt/


$ ll

합계 40

drwxrwsr-x 7 odroid odroid 4096  4월 24 16:08 ./

drwxrwxr-x 5 odroid odroid 4096  4월 24 16:08 ../

-rw-rw-r-- 1 odroid odroid   23  4월 24 16:08 HEAD

drwxrwsr-x 2 odroid odroid 4096  4월 24 16:08 branches/

-rw-rw-r-- 1 odroid odroid  126  4월 24 16:08 config

-rw-rw-r-- 1 odroid odroid   73  4월 24 16:08 description

drwxrwsr-x 2 odroid odroid 4096  4월 24 16:08 hooks/

drwxrwsr-x 2 odroid odroid 4096  4월 24 16:08 info/

drwxrwsr-x 4 odroid odroid 4096  4월 24 16:08 objects/

drwxrwsr-x 4 odroid odroid 4096  4월 24 16:08 refs/


$ du -h

8.0K    ./info

44K     ./hooks

4.0K    ./objects/info

4.0K    ./objects/pack

12K     ./objects

4.0K    ./branches

4.0K    ./refs/heads

4.0K    ./refs/tags

12K     ./refs

96K     .


[링크 : https://git-scm.com/book/ko/v2/Git-서버-서버에-Git-설치하기]


+

shared가 정의되지 않으면 umask에 의해 나오는 결과로 생성하는 것으로 보인다.

근데.. shared만 설정하면 머가 되는진 모르겠네?

 

--shared[=(false|true|umask|group|all|world|everybody|0xxx)]

Specify that the Git repository is to be shared amongst several users. This allows users belonging to the same group to push into that repository. When specified, the config variable "core.sharedRepository" is set so that files and directories under $GIT_DIR are created with the requested permissions. When not specified, Git will use permissions reported by umask(2).

The option can have the following values, defaulting to group if no value is given:

umask (or false)

Use permissions reported by umask(2). The default, when --shared is not specified.

group (or true)

Make the repository group-writable, (and g+sx, since the git group may be not the primary group of all users). This is used to loosen the permissions of an otherwise safe umask(2) value. Note that the umask still applies to the other permission bits (e.g. if umask is 0022, using group will not remove read privileges from other (non-group) users). See 0xxx for how to exactly specify the repository permissions.

all (or world or everybody)

Same as group, but make the repository readable by all users.

0xxx

0xxx is an octal number and each file will have mode 0xxx0xxx will override users' umask(2) value (and not only loosen permissions as group and all does). 0640 will create a repository which is group-readable, but not group-writable or accessible to others. 0660 will create a repo that is readable and writable to the current user and group, but inaccessible to others.

By default, the configuration flag receive.denyNonFastForwards is enabled in shared repositories, so that you cannot force a non fast-forwarding push into it.

If you provide a directory, the command is run inside it. If this directory does not exist, it will be created.


[링크 : https://git-scm.com/docs/git-init#git-init---sharedfalsetrueumaskgroupallworldeverybody0xxx]


위에 기록을 보니..

SGID를 통해서 접근 통제를 하도록(그룹권한을 따름) rws로 설정된다.



+

git 혼자사용으로 검색

[링크 : http://www.internetmap.kr/entry/Simple-Guide-for-Git]


+

2018.04.26

git 콘솔 명령어 목록 모음

[링크 : https://github.com/jeonghwan-kim/git-usage]

'프로그램 사용 > Version Control' 카테고리의 다른 글

git mv 와 log  (0) 2018.08.14
git mv  (0) 2018.08.13
svn 로그 수정 pre-revprop-change  (0) 2017.12.20
svn externals commit 제외하기  (0) 2017.12.10
svn externals 제약사항 (파일은 안됨)  (0) 2017.11.03
Posted by 구차니
Microsoft2018. 4. 24. 15:01

WPF 보다 보니 MVVM 이라는게 나와서 검색


솔찍히 MVC와 다르게 무얼 의미하는지 감이 잘 안오는데

WPF에서 구현된걸 보면

확실히 디자이너와 로직 개발자를 분리하여

제한적이거나 상당부분 개발자가 하던 애니메이션 작업이나 레이아웃 작업을

코드와 상관없이

디자이너가 마음대로 해내고

최소한의 페이지 네비게이션 정도는 지원하여

개발자가 없더라도 디자이너가 기본적인 시나리오 검토까지 가능한

괜찮은 패러다임으로 보인다.




[링크 : https://msdn.microsoft.com/en-us/library/hh848246.aspx?f=255&MSPPError=-2147217396]

[링크 : https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel]

Posted by 구차니