Programming/golang2026. 8. 25. 11:11

sync  패키지

[링크 : https://pkg.go.dev/sync]

 

Mutex.Lock() 은 Mutex.Unlock()으로 풀수 있다.

[링크 : https://pkg.go.dev/sync#Mutex.Lock]

[링크 : https://pkg.go.dev/sync#Mutex]

 

RWMutex.RLock() / RWMutex.Lock() - RWMutex.RUnlock() / RWMutex.Unlock()

abc 순으로 정렬되어있다보니 보기가 어렵네

아무튼 Lock - Unlock / RLock - RUnlock 으로 pair가 된다.

func (rw *RWMutex) Lock()
Lock locks rw for writing. If the lock is already locked for reading or writing, Lock blocks until the lock is available.


func (*RWMutex) Unlock ¶
func (rw *RWMutex) Unlock()
Unlock unlocks rw for writing. It is a run-time error if rw is not locked for writing on entry to Unlock.

As with Mutexes, a locked RWMutex is not associated with a particular goroutine. One goroutine may RWMutex.RLock (RWMutex.Lock) a RWMutex and then arrange for another goroutine to RWMutex.RUnlock (RWMutex.Unlock) it.


func (*RWMutex) RLock ¶
func (rw *RWMutex) RLock()
RLock locks rw for reading.

It should not be used for recursive read locking; a blocked Lock call excludes new readers from acquiring the lock. See the documentation on the RWMutex type.


func (*RWMutex) RUnlock ¶
func (rw *RWMutex) RUnlock()
RUnlock undoes a single RWMutex.RLock call; it does not affect other simultaneous readers. It is a run-time error if rw is not locked for reading on entry to RUnlock.

[링크 : https://pkg.go.dev/sync#RWMutex.Lock]

[링크 : https://pkg.go.dev/sync#RWMutex]

 

[링크 : https://www.jaenung.net/tree/28536]

[링크 : https://rainbow96bear.tistory.com/entry/Go-고루틴-이해하기-뮤텍스-데드락]

 

+

2026.08.26

Usage¶
To help diagnose such bugs, Go includes a built-in data race detector. To use it, add the -race flag to the go command:

$ go test -race mypkg    // to test the package
$ go run -race mysrc.go  // to run the source file
$ go build -race mycmd   // to build the command
$ go install -race mypkg // to install the package

[링크 : https://go.dev/doc/articles/race_detector]

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

golang channel..2 방향, select 등  (0) 2026.08.25
golang Init()  (0) 2026.08.20
golang git commit hash  (0) 2025.11.24
golang 정적웹 파일 포함하기  (0) 2025.11.24
go vet (golang 정적분석)  (0) 2025.10.02
Posted by 구차니
Programming/golang2026. 8. 25. 10:55

기본적으로 채널은 양방향이고, 생성시에 방향을 지정할수 있다

ChannelType = ( "chan" | "chan" "<-" | "<-" "chan" ) ElementType .

chan T          // can be used to send and receive values of type T
chan<- float64  // can only be used to send float64s
<-chan int      // can only be used to receive ints

[링크 : https://go.dev/ref/spec#Channel_types]

[링크 : https://mynewcodings.tistory.com/313]

[링크 : https://jh-labs.tistory.com/716]

 

채널 브릿징

[링크 : https://kr.linkedin.com/pulse/mastering-go-concurrency-comprehensive-guide-channel-sourav-choudhary-0nwbc?tl=ko]

 

 

+

2026.08.26

ch chan<- string 이라는 건 chan<- string 타입의 ch 변수로 해석을 하면 되는데

$ cat ch.go
package main

import "fmt"

// sendOnly: ch1에는 보내기만 가능
func sender(ch string chan<-) {
ch <- "안녕하세요!"
}

// recvOnly: ch1에서 받기만 가능
func receiver(ch <-chan string) {
msg := <-ch
fmt.Println(msg)
}

func main() {
ch := make(chan string) // 생성할 때는 항상 양방향으로 만듦

go sender(ch)   // sender 함수 안에서는 송신만 가능하도록 타입이 제한됨
receiver(ch)    // receiver 함수 안에서는 수신만 가능하도록 타입이 제한됨
}

 

ch string chan<- 을 허용하나 바꾸고 빌드해보는데 에러가 난다. 칫.

$ go build ch.go
# command-line-arguments
./ch.go:6:23: syntax error: unexpected keyword chan in parameter list; possibly missing comma or )

 

+

의도적으로 go를 붙이지 않아 고루틴으로 하지 않고 받는 걸 먼서 생성하고

블럭킹 되어있어서 보내는걸 실행하지 못하게 하면

$ cat ch.go 
package main

import "fmt"

// sendOnly: ch1에는 보내기만 가능
func sender(ch chan<- string) {
ch <- "안녕하세요!"
}

// recvOnly: ch1에서 받기만 가능
func receiver(ch <-chan string) {
msg := <-ch
fmt.Println(msg)
}

func main() {
ch := make(chan string) // 생성할 때는 항상 양방향으로 만듦

receiver(ch) // receiver 함수 안에서는 수신만 가능하도록 타입이 제한됨
sender(ch)   // sender 함수 안에서는 송신만 가능하도록 타입이 제한됨
// go sender(ch) // 혹은 이렇게
}

 

빌드 시에는 아무런 에러나 경고가 없지만

실행시에는 deadlock이라고 띄우준다. 오.. 좋은데?

$ ./ch
fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan receive]:
main.receiver(0x2a1f3ecc6738?)
/home/falinux/work/src/go/ch.go:12 +0x1e
main.main()
/home/falinux/work/src/go/ch.go:19 +0x26

 

둘다 go 붙여서 돌리면 받는 쪽이 느린건지 이상하게(?) 아무런 메시지도 나오지 않는다. 머지?

func main() {
ch := make(chan string) // 생성할 때는 항상 양방향으로 만듦

go receiver(ch) // receiver 함수 안에서는 수신만 가능하도록 타입이 제한됨
go sender(ch)   // sender 함수 안에서는 송신만 가능하도록 타입이 제한됨
}

 

그래서  sleep 추가해도 안되네?

claude 말로는 둘다 go 루틴 실행하고 main()의 끝에 도달해서 종료되는 바람에 그렇다고 한다.

$ cat ch.go 
package main

import (
"fmt"
"time"
)

// sendOnly: ch1에는 보내기만 가능
func sender(ch chan<- string) {
time.Sleep(100)
ch <- "안녕하세요!"
}

// recvOnly: ch1에서 받기만 가능
func receiver(ch <-chan string) {
msg := <-ch
fmt.Println(msg)
}

func main() {
ch := make(chan string) // 생성할 때는 항상 양방향으로 만듦

go receiver(ch) // receiver 함수 안에서는 수신만 가능하도록 타입이 제한됨
go sender(ch)   // sender 함수 안에서는 송신만 가능하도록 타입이 제한됨
}

 

그래서 아래와 같이 main 함수를 늦게 종료하면 정상적으로 잘 나온다.

많이는 하지 않았는데 놓치지 않는걸 보면 

받는 쪽에서는 블로킹 되어있고, 채널 자체는 큐에 차있다가 뺴갈수 있을때 전달이 되는 듯.

func main() {
ch := make(chan string) // 생성할 때는 항상 양방향으로 만듦

go receiver(ch) // receiver 함수 안에서는 수신만 가능하도록 타입이 제한됨
go sender(ch)   // sender 함수 안에서는 송신만 가능하도록 타입이 제한됨

time.Sleep(1000 * time.Millisecond)
}

 

 

+

양방향 전달은 의외로(?) 별거 없다.

그냥 chan<- <-chan 에서 <- 지우고 선언후, 당연하게(?) 보내고 받으면 된다.

$ cat ch.go 
package main

import (
"fmt"
"time"
)

// sendOnly: ch1에는 보내기만 가능
func sender(ch chan string) {
ch <- "안녕하세요!"

msg := <-ch
fmt.Println(msg)
}

// recvOnly: ch1에서 받기만 가능
func receiver(ch chan string) {
msg := <-ch
fmt.Println(msg)

ch <- "느그아부지 모하시노!"
}

func main() {
ch := make(chan string) // 생성할 때는 항상 양방향으로 만듦

go sender(ch)   // sender 함수 안에서는 송신만 가능하도록 타입이 제한됨
go receiver(ch) // receiver 함수 안에서는 수신만 가능하도록 타입이 제한됨

time.Sleep(1000 * time.Millisecond)
}

 

$ ./ch
안녕하세요!
느그아부지 모하시노!

 

+

len() 함수로 현재 채널 버퍼의 크기를 확인할 수 있고

cap() 함수로 채널 버퍼의 최대 크기를 확인할 수 있다

$ cat ch_cap.go 
package main

import "fmt"

func main() {
ch := make(chan int, 5) // 버퍼 크기 5인 채널 생성

ch <- 1
ch <- 2
ch <- 3

fmt.Println("현재 버퍼에 쌓인 개수:", len(ch)) // 3
fmt.Println("버퍼 전체 용량:", cap(ch))       // 5
}

$ go run ch_cap.go
현재 버퍼에 쌓인 개수: 3
버퍼 전체 용량: 5

[링크 : https://mynewcodings.tistory.com/313]

 

그런데 이상하게도 채널 크기를 지정하지 않으면 에러가 발생한다

$ cat ch_cap.go 
package main

import "fmt"

func main() {
ch := make(chan int) // 버퍼 크기 5인 채널 생성

ch <- 1
ch <- 2
ch <- 3

fmt.Println("현재 버퍼에 쌓인 개수:", len(ch)) // 3
fmt.Println("버퍼 전체 용량:", cap(ch))       // 5
}

$ go run ch_cap.go
fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan send]:
main.main()
/home/falinux/work/src/go/ch_cap.go:8 +0x36
exit status 2

 

claude 답변으로는 capacity를 지정하지 않으면 길이가 0이고, 보내는데 받는 쪽이 없어서 deadlock 발생한다고 판단한다고.

즉, 버퍼가 없지만 받아서 소비하지 않으면 계속 블러킹 되는건가?

The capacity, in number of elements, sets the size of the buffer in the channel. If the capacity is zero or absent, the channel is unbuffered and communication succeeds only when both a sender and receiver are ready. Otherwise, the channel is buffered and communication succeeds without blocking if the buffer is not full (sends) or not empty (receives). A nil channel is never ready for communication.

[링크 : https://go.dev/ref/spec#Channel_types]

 

그런데 그렇게 보기에는..

얘는 왜 컴파일도 문제 없고, 실행시에도 아무런 메시지 출력 안되고 (deadlock 안걸리고) 잘 종료되지?

claude 답변으로는 deadlock은 실제로는 쓰레드가 모두 잠들어서 깨지 못하는 상황을 탐지하는거라

main thread가 1초 뒤에 깰꺼고 "기브니 쪼꼬렛!"은 전송되지 못하고 기다리다 종료되는거라고

$ cat ch.go
package main

import (
"fmt"
"time"
)

// sendOnly: ch1에는 보내기만 가능
func sender(ch chan string) {
ch <- "안녕하세요!"
ch <- "기브미 쪼꼬렛!"

msg := <-ch
fmt.Println(msg)
}

// recvOnly: ch1에서 받기만 가능
func receiver(ch chan string) {
msg := <-ch
fmt.Println(msg)

ch <- "느그아부지 모하시노!"
}

func main() {
ch := make(chan string) // 생성할 때는 항상 양방향으로 만듦

go sender(ch)   // sender 함수 안에서는 송신만 가능하도록 타입이 제한됨
// go receiver(ch) // receiver 함수 안에서는 수신만 가능하도록 타입이 제한됨

time.Sleep(1000 * time.Millisecond)
}

 

실제로 단계별로 해보면 "안녕하세요!" 보내고 멈춰버렸다. 그렇군.

$ cat ch.go
package main

import (
"fmt"
"time"
)

// sendOnly: ch1에는 보내기만 가능
func sender(ch chan string) {
fmt.Println("run")
ch <- "안녕하세요!"
fmt.Println("wait")
ch <- "기브미 쪼꼬렛!"
fmt.Println("oops")

msg := <-ch
fmt.Println(msg)
}

// recvOnly: ch1에서 받기만 가능
func receiver(ch chan string) {
msg := <-ch
fmt.Println(msg)

ch <- "느그아부지 모하시노!"
}

func main() {
ch := make(chan string) // 생성할 때는 항상 양방향으로 만듦

go sender(ch)   // sender 함수 안에서는 송신만 가능하도록 타입이 제한됨
// go receiver(ch) // receiver 함수 안에서는 수신만 가능하도록 타입이 제한됨

time.Sleep(1000 * time.Millisecond)
}

 

$ go run ch.go
run

 

 

+

자꾸 헷갈리게 되는데

switch-case가 있고 select-case가 있다

select-case는 채널 전용 으로 생긴건 거의 유사한데

저렇게 값을 던지고 안보고 종료하는 용도로도 쓸 수 있나 보다.

package main

import "fmt"

func fibonacci(c, quit chan int) {
    x, y := 0, 1
    for {
        select {
        case c <- x:
            x, y = y, x+y
        case <-quit:
            fmt.Println("quit")
            return
        }
    }
}

func main() {
    c := make(chan int)
    quit := make(chan int)
    go func() {
        for i := 0; i < 10; i++ {
            fmt.Println(<-c)
        }
        quit <- 0
    }()
    fibonacci(c, quit)
}

[링크 : https://go.dev/tour/concurrency/5]

 

[링크 : https://go.dev/doc/effective_go#control-structures]

[링크 : https://go.dev/doc/effective_go#leaky_buffer]

 

claude 말로는 select에서 block 되어있어서

이를 이용해 타임아웃을 구현하는데 쓸 수 있다고 한다.

package main

import (
"fmt"
"time"
)

func main() {
ch := make(chan string)

go func() {
time.Sleep(2 * time.Second)
ch <- "작업 완료"
}()

select {
case result := <-ch:
fmt.Println(result)
case <-time.After(1 * time.Second): // 1초 안에 ch가 준비 안 되면 여기 실행
fmt.Println("타임아웃!")
}
}

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

golang mutex  (0) 2026.08.25
golang Init()  (0) 2026.08.20
golang git commit hash  (0) 2025.11.24
golang 정적웹 파일 포함하기  (0) 2025.11.24
go vet (golang 정적분석)  (0) 2025.10.02
Posted by 구차니
Programming/C Win32 MFC2026. 8. 25. 10:22

기능을 찾다가 초기화 값에서 이상한 문법을 발견(!)

 

static const int rgb2ycbcr_coeff[5][3] = {
 {0x4D, 0x96, 0x1D},
 {-0x2B, -0x55, 0x80},
 {0x80, -0x6B, -0x15},
 {0x0000, 0x0200, 0x0200}, /* B0, B1, B2 */
 {0x2, 0x2, 0x2}, /* S0, S1, S2 */
};

[링크 : https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/Changing-IPU-Color-Space-Conversion-parameters/ta-p/1100972]

 

그래서 소스코드를 생성하고 타입별로 일단 시도

$ cat hex.c 
#include <stdio.h>

void main()
{
char v1 = -0xFF;
unsigned char v2 = -0xFF;
short v3 = -0xFF;
unsigned short v4 = -0xFF;
unsigned short v4_1 = -0xFFFF;
int v5 = -0xFF;
unsigned int v6 = -0xFF;

printf("%d %u %d %u %d %u\n", v1, v2, v3, v4, v5, v6);
printf("%d %d %d %d %d %d\n", v1, v2, v3, v4, v5, v6);
printf("%x %x %x\n", v2, v4, v5);
}

 

빌드! 경고가 뿜뿜. char 에는 너무 크다~ 라는게 포인트

$ gcc hex.c 
hex.c: In function ‘main’:
hex.c:5:19: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘-255’ to ‘1’ [-Woverflow]
    5 |         char v1 = -0xFF;
      |                   ^
hex.c:6:28: warning: unsigned conversion from ‘int’ to ‘unsigned char’ changes value from ‘-255’ to ‘1’ [-Woverflow]
    6 |         unsigned char v2 = -0xFF;
      |                            ^
hex.c:9:31: warning: unsigned conversion from ‘int’ to ‘short unsigned int’ changes value from ‘-65535’ to ‘1’ [-Woverflow]
    9 |         unsigned short v4_1 = -0xFFFF;
      |  

 

근데.. 왜 unsigned  short과 unsigned int는 예상하지 못한 이상한 값이 나오지?

$ ./a.out 
1 1 -255 65281 -255 4294967041
1 1 -255 65281 -255 -255
ff01 ffffff01
1 1 ffffff01

 

아무튼 먼가 이해될 것 같으면서도 이해가 안되는 이상한 현상이 발생 ㅋㅋ

65281 4294967041

 

'Programming > C Win32 MFC' 카테고리의 다른 글

c malloc 이후 free 시에 원인불명으로 죽는 경우  (1) 2026.01.16
float 자릿수 제한  (0) 2025.10.11
free(): invalid next size (normal)  (0) 2023.12.18
c에서 cpp 함수 불러오기  (0) 2023.01.04
MSB / LSB 변환  (0) 2022.08.29
Posted by 구차니

어제 까지 잘쓰던게

오늘 갑자기 시원한 바람에 안나온다.

아직 한달은 더울꺼 같은데 수리 오려나 ㅠㅠ

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

입추 그리고 시원해짐  (2) 2026.08.10
멍빨  (0) 2026.08.09
놀다옴  (0) 2026.08.08
연차 3일차  (0) 2026.08.05
연차 2일차  (0) 2026.08.04
Posted by 구차니
개소리 왈왈/컴퓨터2026. 8. 24. 18:22

1.5만원 정도에 팔았었나 보다.

[링크 : https://my-wikipedia.tistory.com/351]

 

공식 1.39만?

 

 

[링크 : https://qsenn.co.kr/product/detail.html?product_no=81]

 

 

그나저나 펌웨어가 두가지 버전이 있는데 capslock에 M을 등록해둔건.. 무슨 게임을 위한걸까?

[링크 : https://qsenn.co.kr/article/파일-다운로드/5/1090/] caps lock 사용

[링크 : https://qsenn.co.kr/article/파일-다운로드/5/1091/]  M 으로 사용

'개소리 왈왈 > 컴퓨터' 카테고리의 다른 글

한손 키보드 지름  (0) 2026.08.22
오늘자 줍줍  (0) 2026.08.18
질러?  (2) 2026.08.07
rk-b30 한손 키보드 메뉴얼 획득!  (4) 2026.07.29
다이소 인켈 usb-c 이어폰  (0) 2026.07.29
Posted by 구차니
Linux2026. 8. 24. 16:16

엥.. 이런 기능이 있었어?

 

원래 로그. 시리얼 까지는 뜨는데 장치 가 정상적으로 인식되지 않는다.(/dev/video2 머.. 이런식)

[278473.466593] usb 1-2: new high-speed USB device number 21 using xhci_hcd
[278473.622871] usb 1-2: New USB device found, idVendor=0bda, idProduct=5846, bcdDevice= 0.01
[278473.622889] usb 1-2: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[278473.622896] usb 1-2: Product: USB Camera
[278473.622901] usb 1-2: Manufacturer: Generic
[278473.622906] usb 1-2: SerialNumber: 200901010001
[278473.631115] usb 1-2: Found UVC 1.00 device USB Camera (0bda:5846)
[278479.393020] usb 1-2: USB disconnect, device number 21
[278480.572526] usb 1-2: new high-speed USB device number 22 using xhci_hcd
[278480.729693] usb 1-2: New USB device found, idVendor=0bda, idProduct=5846, bcdDevice= 0.01
[278480.729713] usb 1-2: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[278480.729720] usb 1-2: Product: USB Camera
[278480.729726] usb 1-2: Manufacturer: Generic
[278480.729731] usb 1-2: SerialNumber: 200901010001
[278480.736858] usb 1-2: Found UVC 1.00 device USB Camera (0bda:5846)
[278486.477558] usb 1-2: USB disconnect, device number 22
[278487.314234] usb 1-2: new high-speed USB device number 23 using xhci_hcd
[278487.470537] usb 1-2: New USB device found, idVendor=0bda, idProduct=5846, bcdDevice= 0.01
[278487.470556] usb 1-2: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[278487.470564] usb 1-2: Product: USB Camera
[278487.470569] usb 1-2: Manufacturer: Generic
[278487.470574] usb 1-2: SerialNumber: 200901010001
[278487.478080] usb 1-2: Found UVC 1.00 device USB Camera (0bda:5846)
[278491.388012] usb 1-2: USB disconnect, device number 23

 

uvc 디버깅 모드 활성화

sudo sh -c 'echo 0xffff > /sys/module/uvcvideo/parameters/trace'

[링크 : https://www.ideasonboard.org/uvc/faq/]

 

먼가 확실히 자세히 나온다. usb 1-2에 연결되었고, 2초 뒤에 잠든다.

[278566.939787] usb 1-2: new high-speed USB device number 24 using xhci_hcd
[278567.096675] usb 1-2: New USB device found, idVendor=0bda, idProduct=5846, bcdDevice= 0.01
[278567.096684] usb 1-2: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[278567.096687] usb 1-2: Product: USB Camera
[278567.096689] usb 1-2: Manufacturer: Generic
[278567.096691] usb 1-2: SerialNumber: 200901010001
[278567.101935] usb 1-2: Probing generic UVC device 2
[278567.103005] usb 1-2: Found format MJPG little-endian (0x47504a4d)
[278567.103014] usb 1-2: - 1280x720 (15.0 fps)
[278567.103019] usb 1-2: - 960x720 (15.0 fps)
[278567.103022] usb 1-2: - 640x480 (15.0 fps)
[278567.103026] usb 1-2: Found format YUYV little-endian (0x56595559)
[278567.103030] usb 1-2: - 1280x720 (10.0 fps)
[278567.103033] usb 1-2: - 960x720 (15.0 fps)
[278567.103036] usb 1-2: - 640x480 (15.0 fps)
[278567.103044] usb 1-2: Found a Status endpoint (addr 83)
[278567.103051] usb 1-2: Found UVC 1.00 device USB Camera (0bda:5846)
[278567.103058] usb 1-2: Scanning UVC chain:
[278567.103060]  OT 3 <- XU 4 <- PU 2 <- IT 1
[278567.103070] usb 1-2: Found a valid video chain (1 -> 3)
[278567.103076] usb 1-2: Added control 00000000-0000-0000-0000-000000000101/2 to device 2 entity 2
[278567.104003] usb 1-2: Adding mapping 'Brightness' to control 00000000-0000-0000-0000-000000000101/2
[278567.104011] usb 1-2: Added control 00000000-0000-0000-0000-000000000101/3 to device 2 entity 2
[278567.104544] usb 1-2: Adding mapping 'Contrast' to control 00000000-0000-0000-0000-000000000101/3
[278567.104550] usb 1-2: Added control 00000000-0000-0000-0000-000000000101/6 to device 2 entity 2
[278567.105156] usb 1-2: Adding mapping 'Hue' to control 00000000-0000-0000-0000-000000000101/6
[278567.105162] usb 1-2: Added control 00000000-0000-0000-0000-000000000101/7 to device 2 entity 2
[278567.105912] usb 1-2: Adding mapping 'Saturation' to control 00000000-0000-0000-0000-000000000101/7
[278567.105923] usb 1-2: Added control 00000000-0000-0000-0000-000000000101/8 to device 2 entity 2
[278567.106546] usb 1-2: Adding mapping 'Sharpness' to control 00000000-0000-0000-0000-000000000101/8
[278567.106556] usb 1-2: Added control 00000000-0000-0000-0000-000000000101/9 to device 2 entity 2
[278567.107522] usb 1-2: Adding mapping 'Gamma' to control 00000000-0000-0000-0000-000000000101/9
[278567.107532] usb 1-2: Added control 00000000-0000-0000-0000-000000000101/10 to device 2 entity 2
[278567.108461] usb 1-2: Adding mapping 'White Balance Temperature' to control 00000000-0000-0000-0000-000000000101/10
[278567.108471] usb 1-2: Added control 00000000-0000-0000-0000-000000000101/1 to device 2 entity 2
[278567.109027] usb 1-2: Adding mapping 'Backlight Compensation' to control 00000000-0000-0000-0000-000000000101/1
[278567.109037] usb 1-2: Added control 00000000-0000-0000-0000-000000000101/5 to device 2 entity 2
[278567.109658] usb 1-2: Adding mapping 'Power Line Frequency' to control 00000000-0000-0000-0000-000000000101/5
[278567.109667] usb 1-2: Added control 00000000-0000-0000-0000-000000000101/11 to device 2 entity 2
[278567.110619] usb 1-2: Adding mapping 'White Balance, Automatic' to control 00000000-0000-0000-0000-000000000101/11
[278567.110631] usb 1-2: Added control 00000000-0000-0000-0000-000000000001/2 to device 2 entity 1
[278567.111360] usb 1-2: Adding mapping 'Auto Exposure' to control 00000000-0000-0000-0000-000000000001/2
[278567.111369] usb 1-2: Added control 00000000-0000-0000-0000-000000000001/3 to device 2 entity 1
[278567.112034] usb 1-2: Adding mapping 'Exposure, Dynamic Framerate' to control 00000000-0000-0000-0000-000000000001/3
[278567.112044] usb 1-2: Added control 00000000-0000-0000-0000-000000000001/4 to device 2 entity 1
[278567.112816] usb 1-2: Adding mapping 'Exposure Time, Absolute' to control 00000000-0000-0000-0000-000000000001/4
[278567.118275] usb 1-2: UVC device initialized
[278567.154916] usb 1-2: uvc_v4l2_open
[278567.155017] usb 1-2: uvc_v4l2_release
[278567.187892] usb 1-2: uvc_v4l2_open
[278567.187898] usb 1-2: uvc_v4l2_open
[278567.187916] usb 1-2: uvc_v4l2_release
[278567.187916] usb 1-2: uvc_v4l2_release
[278567.187966] usb 1-2: uvc_v4l2_open
[278567.188081] usb 1-2: uvc_v4l2_open
[278567.219249] usb 1-2: uvc_v4l2_release
[278567.219268] usb 1-2: uvc_v4l2_release
[278567.219292] usb 1-6: uvc_v4l2_open
[278567.219421] usb 1-6: uvc_v4l2_open
[278567.314809] usb 1-6: Resuming interface 0
[278567.314814] usb 1-6: Resuming interface 1
[278567.314845] usb 1-6: uvc_v4l2_release
[278567.315015] usb 1-6: uvc_v4l2_release
[278567.315033] usb 1-6: uvc_v4l2_open
[278567.315218] usb 1-6: uvc_v4l2_open
[278567.315268] usb 1-6: uvc_v4l2_release
[278567.315270] usb 1-6: uvc_v4l2_release
[278567.316126] usb 1-2: uvc_v4l2_open
[278567.316159] usb 1-2: uvc_v4l2_release
[278567.316834] usb 1-2: uvc_v4l2_open
[278567.316919] usb 1-2: uvc_v4l2_release
[278567.317091] usb 1-2: uvc_v4l2_open
[278567.317110] usb 1-2: uvc_v4l2_release
[278567.317435] usb 1-2: uvc_v4l2_open
[278567.317481] usb 1-2: uvc_v4l2_release
[278567.317609] usb 1-2: uvc_v4l2_open
[278567.317651] usb 1-2: uvc_v4l2_release
[278567.377971] usb 1-2: uvc_v4l2_open
[278567.378044] usb 1-2: Control 0x009a0908 not found
[278567.378047] usb 1-2: Control 0x009a0909 not found
[278567.378049] usb 1-2: Control 0x009a090d not found
[278567.378055] usb 1-2: uvc_v4l2_release
[278567.378176] usb 1-6: uvc_v4l2_open
[278567.378235] usb 1-6: Control 0x009a0908 not found
[278567.378238] usb 1-6: Control 0x009a0909 not found
[278567.378240] usb 1-6: Control 0x009a090d not found
[278567.378247] usb 1-6: uvc_v4l2_release
[278567.378832] usb 1-2: uvc_v4l2_open
[278567.378885] usb 1-2: Control 0x009a0908 not found
[278567.378887] usb 1-2: Control 0x009a0909 not found
[278567.378889] usb 1-2: Control 0x009a090d not found
[278567.378892] usb 1-2: uvc_v4l2_release
[278567.379006] usb 1-6: uvc_v4l2_open
[278567.379065] usb 1-6: Control 0x009a0908 not found
[278567.379068] usb 1-6: Control 0x009a0909 not found
[278567.379070] usb 1-6: Control 0x009a090d not found
[278567.379073] usb 1-6: uvc_v4l2_release
[278569.548738] usb 1-2: Suspending interface 1
[278569.548755] usb 1-2: Suspending interface 0
[278569.814555] usb 1-6: Suspending interface 1
[278569.814570] usb 1-6: Suspending interface 0

[278580.287985] usb 1-2: uvc_v4l2_open
[278580.384008] usb 1-2: Resuming interface 0
[278580.384014] usb 1-2: Resuming interface 1
[278580.384154] usb 1-2: Control 0x009a0908 not found
[278580.384159] usb 1-2: Control 0x009a0909 not found
[278580.384162] usb 1-2: Control 0x009a090d not found
[278580.384172] usb 1-2: uvc_v4l2_release
[278580.384305] usb 1-6: uvc_v4l2_open
[278580.480571] usb 1-6: Resuming interface 0
[278580.480576] usb 1-6: Resuming interface 1
[278580.480679] usb 1-6: Control 0x009a0908 not found
[278580.480682] usb 1-6: Control 0x009a0909 not found
[278580.480683] usb 1-6: Control 0x009a090d not found
[278580.480693] usb 1-6: uvc_v4l2_release
[278582.526741] usb 1-2: Suspending interface 1
[278582.526755] usb 1-2: Suspending interface 0
[278582.980297] usb 1-6: Suspending interface 1
[278582.980314] usb 1-6: Suspending interface 0

 

 

# cat /sys/bus/usb/devices/2-1/power/control
auto
# cat /sys/bus/usb/devices/2-1/power/autosuspend_delay_ms
2000
# echo on | tee /sys/bus/usb/devices/2-1/power/control

 

요렇게 하면 다시 resume 되고 장비가 잘 붙어서 된다.

'Linux' 카테고리의 다른 글

sshfs  (0) 2026.07.21
fc-list 폰트 관리  (0) 2026.06.09
hdmi 연결과 비디오 메모리 사용량  (0) 2026.05.02
jstest  (0) 2026.04.03
리눅스 메모리 timing 확인하기  (0) 2026.01.27
Posted by 구차니

우옹.. 이런 걸 허용하다니

 

ollama를 기준으로 설명된게 많은데

[링크 : https://wikidocs.net/334911]

[링크 : https://yscho03.tistory.com/349]

 

올해 1월에 이미 anthropic api를 지원했다고

아니.. 내가 4월 부터 해봤는데 그 이전에 이미 지원했었다니.. 세상에!

llama-server -hf unsloth/Qwen3-Next-80B-A3B-Instruct-GGUF:Q4_K_M

# Run Claude Code with local endpoint
ANTHROPIC_BASE_URL=http://127.0.0.1:8080 claude

[링크 : https://huggingface.co/blog/ggml-org/anthropic-messages-api-in-llamacpp]

 

내가 회사에 두고 있는 local LLM 서버 아이피/포트에 --model 옵션으로 해서 지정해주면 되는것 같다.

$ ANTHROPIC_BASE_URL="http://192.168.40.238:8080" claude --model gemma4-e4b

 

 인사도 시켜보고, 이것저것 해보는데 내용 퀄리티 까지 본건 아니라서 모르겠지만 일단 작동은 한다.

 

 

웃긴건.. 회사 계정이라서 claude pro  결제 중인데, 그 사용량이 나온다는거.

그냥 출력 안되게 막아야 하지 않나? 모델 선정된 것에 따라 띄워야지..

 

그나저나 클로드 처음켜고 인사하던가 먼가 말을 하면 처음 보내는 프롬프트의 길이가 미친것 같다.

 

1562 line

19691 word

151492 bytes

이쁘게 꾸며진거라 라인수가 길긴 하겠지만, 단어수 대충 20k 흐음..

$ wc claude.tt 
  1562  19691 151492 claude.tt

$ wc -c claude.tt 
151492 claude.tt

$ wc -m claude.tt 
150916 claude.tt

$ wc -l claude.tt 
1562 claude.tt

$ wc -w claude.tt 
19691 claude.tt

 

그나마 내꺼에서 돌려볼만한게 gemma4-e4b인데 이걸로도 너무 느려서

역시 돈주고 쓰는게 싸다는 결론이.. 크흡

 

+

응답 시간이 서버에 맞춰져 있어서 2분 30초 넘으면 타임아웃 나는지 바보가 된다.

local LLM의 컨텍스트와 속도가 받혀줘야 쓸수 있을 듯.

 

최초 기동시 20k 정도 날리는데 클로드의 설정과 기능에 대한 프롬프트를 던져서 엄청 오래 걸리고

그 이후로도 제법 적지 않은 크기의 명령을 꾸준히 날린다.

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

Qwen3.8-27B-UD-IQ2_XXS / 1080ti 11GB  (0) 2026.08.19
lambda.ai gpu 클라우드  (0) 2026.08.11
elice cloud - gpu / npu 클라우드  (0) 2026.08.11
mediapipe / mmpose  (0) 2026.08.11
runpod.. 재조사  (0) 2026.08.11
Posted by 구차니
게임/titanfall 22026. 8. 23. 23:05

스샷을 못찍었는데

한칸씩 다른 시간대로 오가면서 점프하는게 참 신선했다

 

개인적으로 최애(!!) 무기 마스티프

가로로 나란히 6발 정도 면적으로 날아가서

몰려오면 제법 잡기 편하다.

 

아무튼 저길 정찰하란다.

 

가다 보니 손에 장비가 고장나서 틱틱거리다가

얻어맞고는 오작동했는지 상/하체 분리되서 죽어있었던듯.

 

space fold traversal 음.. 공간을 접어서 이동한다?

 

엄청 오랫만에 보는 느낌. BT 반가워!

타이탄과 적들이 몰려오는데 BT 타고도 시간을 넘나들수 있다.

 

먼가 무기가 와닫지 않네. 개인 취향으로는 역시 굵고묵직한(!) tone 이 최고여

 

장비 장비를 정지합니다. 안되잖아? 으아~~~

 

ark 가 폭주하고 손에 낀 디바이스 덕인지 멈춘 시간 속에 나만 움직일수 있다.

주변은 멈춘채 나만 움직이는 이 기묘한 느낌은 스샷으로는 안나오네

 

여기저기 방방 뒤면서 코어라고 해야하나? 아무튼 접근하면 컷 먼가 열심히 분석한다.

 

어우 BT 또 반갑네 ㅋㅋ

 

아무튼 통신도 안되고 자료는 전달해야 하니 떠 먼길을 가게 생겼구나

 

등산하는 BT

 

무기 획득하는데 먼가 내용부터(?) 불안하다

anti titan sniper. 타이탄이랑 맨몸으로 싸울일 있다는거잖아?

 

쌔무기는 BT꺼라 탑승하고 잡으란다

 

먼가 얘도 와닫지 않아~ ㅋㅋ

 

아무튼 저항군이 저길 털려는건지 저기까지 와서 방어중인지

신나게 공격받고 있으니 이걸 막아줘야 한다.

 

아까는 ark 더니 이젠 arc tool 머지?

 

돌아오니 arc tool 회수하러 가라고 보낸다

 

 

벽타다 떨어지거나 너무 높게 뛰어서 감전된게 10번도 넘고..

 

바람으로 떠오르는거.. 이거 하프라이프 2에 이런게 있지 않았던가?

 

열심히 뛰어가서 로봇에게 삥뜯어 오란다.

 

오오오 멋져!

 

arc tool 빼앗기고 침울해지는 로봇 ㅋㅋㅋ

 

가는것도 개고생이었는데 돌아오는것도 개고생. 마지막은 바람 타고 벽 따라서 슝~하고 날라온다

 

 

발전기에 arc tool로 고쳐서(방사능 나오는데서) 해보자는데

방사능이라서 쫄아서 후다닥 한다고 스샷도 없고 ㅋㅋ

 

아무튼 전기 살리고 통시하려니 통신장치 망가짐

 

안테나 접시를 가지러 가는 길에 열심히 싸우고 뛰고 헉헉

 

갈길이 없다고 던진댄다. 68% 확율

 

조준하시고~ 쏘세요!

 

Trust me

 

와우. 저래서 세상 망하겠네 싶은 생각이 마구드는

(혹은 데드 스페이스!?)

 

몰랐는데.. 휠을 돌리거나 1,2 누르면 무기가 바뀐다. 와..

아무튼 아까 주워온 대 타이만 무기로 저기 오는 타이탄을 살살 녹여주고 개꿀!

 

크레인들로 벽을 옮겨서 또 벽에 벽을 타고 가게 하면 된다.

 

접시에서 업링크 모듈을 빼와서 교체하려 한거였군

 

올때도 버벅대며 와서 어떻게 돌아가야 하지 (멘붕)

'게임 > titanfall 2' 카테고리의 다른 글

titanfall2 진행중 - effect and cause  (0) 2026.08.23
titanfall2 진행중  (0) 2026.08.22
titanfall 2 진행중 - into the abyss  (0) 2026.08.17
titanfall 2 진행중  (0) 2026.08.16
titanfall 2 시작  (2) 2026.08.15
Posted by 구차니
게임/titanfall 22026. 8. 23. 00:03

 

 

이동하다 보면 시공간이 꼬이는지 아니면 다른세상인지 오락가락한다

 

 

BT가 나보다 똑똑한거 같아.

어.. 너도? 나도! (AI랑 노닥이면서 일하는데 부쩍 드는 느낌..)

 

앤더슨 아찌의 타이탄이 있는거 보면 살아있는것 같은데

지는 커서 못들어가니 나보고 보고 오란다. 와.. 와... 와... ai 너어는 정말

 

근데 왜 천장에 박혀계세요?

 

미스터 앤더쓴~ 사망으로 특수작전 217의 지휘관이 이양되었다고.

 

어익후 BT님 인간에게 현장 진급도 시켜주시고 감사합니다?

 

시체 절반에 장치가 남아있을거라고 찾아오시랍니다!!

 

죽창(?)을 뽑아서

 

저기로 가라십니다!

인간 : 멋져부러! 담에는 날 던져 버릴지도 모르겠어!

 

BT : 기억해 둘게 ㅋㅋㅋ

 

올라가서는 여기서도 한 10번 죽음 후..

저 11m 쪽으로 가서 조금 버티면 문이 열리는데

그걸 모르고 계속 달려가서 싸우다 죽음

 

야 난 도착 못했는데 스테이지 이미지가 스포 아냐?

 

아니이~ 이렇게 비참하게 박혀있으시냐 ㅠㅠ

 

암튼 회수하고 휠 클릭하면 이제 cloak이 아니라 시간을 오간다. 오.. 신기해

 

요긴 과거 시간대?

 

fold weapon을 어떻게 해석해야 할까.

마크로스에서도 폴드가 나오는게 그런 개념으로 시공간을 접어 버리는 무기라고 해야하려나?

 

아크는 어딘가 있다. ark 방주..?

 

쭈욱 가다 보면.. 어..? human specimen 3,4...?? 인간을 표본으로 써?

 

또 새로운 스테이지..

후.. 또 몇번을 떨어지고, 죽고

점프하고 가면서 미래와 과거를 오가며 뛰어야 하는 참 신선하긴 구성이긴한데..

미래와 과거 양쪽으로 두드려 맞으면 어쩌란거냐 ㅠㅠ

'게임 > titanfall 2' 카테고리의 다른 글

titanfall2 진행중 - the beacon  (0) 2026.08.23
titanfall2 진행중  (0) 2026.08.22
titanfall 2 진행중 - into the abyss  (0) 2026.08.17
titanfall 2 진행중  (0) 2026.08.16
titanfall 2 시작  (2) 2026.08.15
Posted by 구차니
게임/titanfall 22026. 8. 22. 23:50

어우.. 도대체 얼마나 떨어졌던지..

로딩이 빠른 게임이라 다행이야..

 

물건들이 90 막 돌아가있으니 이게 아래가 맞나? 막 헷갈리던 스테이지

 

그래도 너무 헤매지 않게 ghost runner가 있어서 다행

 

아무튼 쭈욱 올라가면 스테이지가 막 조립되고

적 타이탄 2마리에 로봇에 인간에 어마어마 하게 쏟아져서 또 몇십번 죽은 듯 ㅠㅠ

 

카페베네 하나 붙여야 하나?

 

아무튼 싸우다 보면 뒤에서 등장하는데

처음에 아군인줄 알고 어리버리 하다가 맞아죽고

그 다음에는 후다닥 거기로 도망간다고 못 찍음

 

오.. 또 좀 진행이 되었나 보다

 

아까 그 개고생 하던 곳의 천장 위.. 트루먼 쇼?

 

오 얼마만이야 BT!!

날아오는(?) 벽을 타고 저기로 잘~ 가면된다.

가는 길에 헬멧(조준점 위 빛나는거) 있으니 대충 챙기기

 

넘어가면 타이탄 3 vs 1로 싸워야 한다.

몇번 죽었더라.. 후..

 

그나저나 겨우 쓰러트리고 올라가면 이제 또 이름 나오는거 보니 중간보스인듯

칼 들고 설치는데 일뽕 지대로 맞았니?

그 와중에 얼굴 마스크 머냐. 다리 보니 로봇인가?

 

아무튼 잘 도망다니면서 피통 잘 채우고 무기 바꾸면서 잘 두드려패면

 

배터리로 바꿔준다(응?)

 

어우 갈길이 멀다

 

왜 에어장이 생각나지 -ㅁ-

'게임 > titanfall 2' 카테고리의 다른 글

titanfall2 진행중 - the beacon  (0) 2026.08.23
titanfall2 진행중 - effect and cause  (0) 2026.08.23
titanfall 2 진행중 - into the abyss  (0) 2026.08.17
titanfall 2 진행중  (0) 2026.08.16
titanfall 2 시작  (2) 2026.08.15
Posted by 구차니