Programming/golang2024. 2. 15. 09:22

golang은 1개 cpu만 쓰도록 되어 있다는데

요즘 버전에서는 어떻게 바뀌었나 확인은 필요할 것 같다.

 

해보니 전체 코어 갯수 만큼 돌리도록 설정되는 듯. (go 1.20.4에서 테스트)

func GOMAXPROCS ¶
func GOMAXPROCS(n int) int
GOMAXPROCS sets the maximum number of CPUs that can be executing simultaneously and returns the previous setting. It defaults to the value of runtime.NumCPU. If n < 1, it does not change the current setting. This call will go away when the scheduler improves.

func

 

 

[링크 : https://pkg.go.dev/runtime#NumCPU]

[링크 : https://pkg.go.dev/runtime#GOMAXPROCS]

 

[링크 : https://pyrasis.com/book/GoForTheReallyImpatient/Unit33/01]

 

 

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

golang package  (0) 2024.02.19
golang html/template ParseFiles()  (0) 2024.02.16
golang echo 템플릿 파일로 불러오기  (0) 2024.02.14
golang switch  (0) 2024.02.08
golang switch - fallthrough  (0) 2024.02.08
Posted by 구차니
Programming/golang2024. 2. 14. 18:06

"html/template" 를 이용하여 구현하면 된다.

echo도 html을 쓴걸로 아는데 template까지는 안끌어왔나?

 

[링크 : https://dev.to/ykyuen/setup-nested-html-template-in-go-echo-web-framework-e9b]

[링크 : https://gitlab.com/ykyuen/golang-echo-template-example/]

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

golang html/template ParseFiles()  (0) 2024.02.16
golang runtime.GOMAXPROCS()  (0) 2024.02.15
golang switch  (0) 2024.02.08
golang switch - fallthrough  (0) 2024.02.08
golang break, continue 라벨 그리고 goto  (0) 2024.02.08
Posted by 구차니
파일방2024. 2. 13. 15:37

이런걸 만들어서 팔다니 대박 -_-

[링크 : https://flipperzero.one/]

[링크 : https://gigglehd.com/gg/mobile/15561065]

 

나름 디자인도 잘 뽑혀 나왔고

가격이 165$. 환율 고려하면 20만원 정도 하긴 한데

저렇게 컴팩트 하게 기능이 다 있는거면, 직접 만들바에는 사는것도 나쁘지 않겠다 싶을 정도

[링크 : https://lab401.com/products/flipper-zero]

 

SPI 로 된 sub 1GHz transceiver 요게 RF의 핵심인 듯

Ultra low-power wireless applications operating in the 315/433/868/915 MHz ISM/SRD bands


[링크 : https://www.ti.com/lit/ds/symlink/cc1101.pdf]

[링크 : https://github.com/flipperdevices/flipperzero-firmware/pull/2747]

'파일방' 카테고리의 다른 글

untangle  (0) 2024.03.11
ventoy  (0) 2024.03.09
LVGL (Light and Versatile Graphics Library)  (0) 2023.11.18
bytran - hitran 시뮬레이터?  (0) 2023.08.21
kchmviewer  (0) 2023.06.14
Posted by 구차니

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

ㄹ미ㅏㄴ어리ㅏㅁㄴ어리ㅏㄴㅁ어리ㅏ  (0) 2024.03.06
소득공제 공부 ㅠ  (0) 2024.02.29
으아아아아아  (0) 2024.01.24
개 피곤  (0) 2024.01.12
일이 안풀린다  (0) 2023.11.23
Posted by 구차니

calc에서 url 치는데 자꾸 italic 으로 기울여 쓰기 해서

검색해보니 자동고침에서  /문자열/ 의 경우 자동으로 바꾼다고..

리눅스 개발자도 좀 배려해달라!

[링크 : https://ask.libreoffice.org/t/lo-changing-text-to-italics/61544]

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

libreoffice calc 빈 열 삭제하기  (0) 2024.08.02
libreoffice hwp 확장  (0) 2023.10.11
libreoffice calc 중복제거  (0) 2023.08.05
libreoffice OpenCL 적용하기  (0) 2023.08.04
리브레 오피스 Calc 중복제거  (0) 2020.11.05
Posted by 구차니
Linux2024. 2. 13. 10:20

btrfs는 fsck로 체크 못하고, btrfs 유틸리티의 check 명령을 통해서 확인해야 한다.

# fsck /dev/mmcblk2p9
fsck from util-linux 2.37.4
If you wish to check the consistency of a BTRFS filesystem or
repair a damaged filesystem, see btrfs(8) subcommand 'check'.

# btrfs
btrfs               btrfs-convert       btrfs-find-root     btrfs-image         btrfs-map-logical   btrfs-select-super  btrfsck             btrfstune           

# btrfs check /dev/mmcblk2p9
Opening filesystem to check...
Checking filesystem on /dev/mmcblk2p9
UUID: a6226cd4-fc4e-4e20-8861-5870feefb3da
[1/7] checking root items
[2/7] checking extents
[3/7] checking free space tree
[4/7] checking fs roots
[5/7] checking only csums items (without verifying data)
[6/7] checking root refs
[7/7] checking quota groups skipped (not enabled on this FS)
found 12189671424 bytes used, no error found
total csum bytes: 11890008
total tree bytes: 14303232
total fs tree bytes: 180224
total extent tree bytes: 229376
btree space waste bytes: 1957387
file data blocks allocated: 12175368192
 referenced 12171370496

 

man은 안되서 --help를 보는데 내용이 부실하긴 하다. restore와 rescue는 어떨 때 쓸 수 있으려나?

# btrfs --help
usage: btrfs [--help] [--version] [--format <format>] [-v|--verbose] [-q|--quiet] <group> [<group>...] <command> [<args>]

    btrfs balance start [options] <path>
        Balance chunks across the devices
    btrfs balance pause <path>
        Pause running balance
    btrfs balance cancel <path>
        Cancel running or paused balance
    btrfs balance resume <path>
        Resume interrupted balance
    btrfs balance status [-v] <path>
        Show status of running or paused balance

    btrfs check [options] <device>
        Check structural integrity of a filesystem (unmounted).

    btrfs device add [options] <device> [<device>...] <path>
        Add one or more devices to a mounted filesystem.
    btrfs device delete <device>|<devid> [<device>|<devid>...] <path>
    btrfs device remove <device>|<devid> [<device>|<devid>...] <path>
        Remove a device from a filesystem
    btrfs device scan [-d|--all-devices] <device> [<device>...]
    btrfs device scan -u|--forget [<device>...]
        Scan or forget (unregister) devices of btrfs filesystems
    btrfs device ready <device>
        Check and wait until a group of devices of a filesystem is ready for mount
    btrfs device stats [options] <path>|<device>
        Show device IO error statistics
    btrfs device usage [options] <path> [<path>..]
        Show detailed information about internal allocations in devices.

    btrfs filesystem df [options] <path>
        Show space usage information for a mount point
    btrfs filesystem du [options] <path> [<path>..]
        Summarize disk usage of each file.
    btrfs filesystem show [options] [<path>|<uuid>|<device>|label]
        Show the structure of a filesystem
    btrfs filesystem sync <path>
        Force a sync on a filesystem
    btrfs filesystem defragment [options] <file>|<dir> [<file>|<dir>...]
        Defragment a file or a directory
    btrfs filesystem resize [options] [devid:][+/-]<newsize>[kKmMgGtTpPeE]|[devid:]max <path>
        Resize a filesystem
    btrfs filesystem label [<device>|<mount_point>] [<newlabel>]
        Get or change the label of a filesystem
    btrfs filesystem usage [options] <path> [<path>..]
        Show detailed information about internal filesystem usage .

    btrfs inspect-internal inode-resolve [-v] <inode> <path>
        Get file system paths for the given inode
    btrfs inspect-internal logical-resolve [-Pvo] [-s bufsize] <logical> <path>
        Get file system paths for the given logical address
    btrfs inspect-internal subvolid-resolve <subvolid> <path>
        Get file system paths for the given subvolume ID.
    btrfs inspect-internal rootid <path>
        Get tree ID of the containing subvolume of path.
    btrfs inspect-internal min-dev-size [options] <path>
        Get the minimum size the device can be shrunk to
    btrfs inspect-internal dump-tree [options] <device> [<device> ..]
        Dump tree structures from a given device
    btrfs inspect-internal dump-super [options] device [device...]
        Dump superblock from a device in a textual form
    btrfs inspect-internal tree-stats [options] <device>
        Print various stats for trees

    btrfs property get [-t <type>] <object> [<name>]
        Get a property value of a btrfs object
    btrfs property set [-f] [-t <type>] <object> <name> <value>
        Set a property on a btrfs object
    btrfs property list [-t <type>] <object>
        Lists available properties with their descriptions for the given object

    btrfs qgroup assign [options] <src> <dst> <path>
        Assign SRC as the child qgroup of DST
    btrfs qgroup remove [options] <src> <dst> <path>
        Remove a child qgroup SRC from DST.
    btrfs qgroup create <qgroupid> <path>
        Create a subvolume quota group.
    btrfs qgroup destroy <qgroupid> <path>
        Destroy a quota group.
    btrfs qgroup show [options] <path>
        Show subvolume quota groups.
    btrfs qgroup limit [options] <size>|none [<qgroupid>] <path>
        Set the limits a subvolume quota group.

    btrfs quota enable <path>
        Enable subvolume quota support for a filesystem.
    btrfs quota disable <path>
        Disable subvolume quota support for a filesystem.
    btrfs quota rescan [-sw] <path>
        Trash all qgroup numbers and scan the metadata again with the current config.

    btrfs receive [options] <mount>
    btrfs receive --dump [options]
        Receive subvolumes from a stream

    btrfs replace start [-Bfr] <srcdev>|<devid> <targetdev> <mount_point>
        Replace device of a btrfs filesystem.
    btrfs replace status [-1] <mount_point>
        Print status and progress information of a running device replace operation
    btrfs replace cancel <mount_point>
        Cancel a running device replace operation.

    btrfs rescue chunk-recover [options] <device>
        Recover the chunk tree by scanning the devices one by one.
    btrfs rescue super-recover [options] <device>
        Recover bad superblocks from good copies
    btrfs rescue zero-log <device>
        Clear the tree log. Usable if it's corrupted and prevents mount.
    btrfs rescue fix-device-size <device>
        Re-align device and super block sizes. Usable if newer kernel refuse to mount it due to mismatch super size
    btrfs rescue create-control-device
        Create /dev/btrfs-control (see 'CONTROL DEVICE' in btrfs(5))
    btrfs rescue clear-uuid-tree
        Delete uuid tree so that kernel can rebuild it at mount time

    btrfs restore [options] <device> <path>
    btrfs restore [options] -l <device>
        Try to restore files from a damaged filesystem (unmounted)

    btrfs scrub start [-BdqrRf] [-c ioprio_class -n ioprio_classdata] <path>|<device>
        Start a new scrub. If a scrub is already running, the new one fails.
    btrfs scrub cancel <path>|<device>
        Cancel a running scrub
    btrfs scrub resume [-BdqrR] [-c ioprio_class -n ioprio_classdata] <path>|<device>
        Resume previously canceled or interrupted scrub
    btrfs scrub status [-dR] <path>|<device>
        Show status of running or finished scrub

    btrfs send [-ve] [-p <parent>] [-c <clone-src>] [-f <outfile>] <subvol> [<subvol>...]
        Send the subvolume(s) to stdout.

    btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>
        Create a subvolume
    btrfs subvolume delete [options] <subvolume> [<subvolume>...]
    btrfs subvolume delete [options] -i|--subvolid <subvolid> <path>
        Delete subvolume(s)
    btrfs subvolume list [options] <path>
        List subvolumes and snapshots in the filesystem.
    btrfs subvolume snapshot [-r] [-i <qgroupid>] <subvolume> { <subdir>/<name> | <subdir> }
        
    btrfs subvolume get-default <path>
        Get the default subvolume of a filesystem
    btrfs subvolume set-default <subvolume>
    btrfs subvolume set-default <subvolid> <path>
        Set the default subvolume of the filesystem mounted as default.
    btrfs subvolume find-new <path> <lastgen>
        List the recently modified files in a filesystem
    btrfs subvolume show [options] <path>
        Show more information about the subvolume (UUIDs, generations, times, snapshots)
    btrfs subvolume sync <path> [<subvol-id>...]
        Wait until given subvolume(s) are completely removed from the filesystem.

    btrfs help [--full] [--box]
        Display help information
    btrfs version
        Display btrfs-progs version

Use --help as an argument for information on a specific group or command.
Options for --format are: text, json

[링크 : https://www.nemonein.xyz/2019/12/2861/]

'Linux' 카테고리의 다른 글

lsusb -v 로 본 장치(HID MT, mouse)  (0) 2024.03.08
systemd 지연된 시작  (0) 2024.02.29
리눅스 파일 시스템 캐싱  (0) 2024.01.09
multitail / tail  (2) 2023.10.18
top 로그로 남기기  (0) 2023.10.17
Posted by 구차니

개 한놈은 산책가자고 얼굴 핥아대고

개 다른 한놈은 코로 문열고 들어와서 굴러 다니지도 못하게 하고 -_-

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

주말이 짧다  (0) 2024.02.25
으윽 비가 온다.  (0) 2024.02.18
애견놀이터 민원은 실패  (0) 2024.02.03
상병발생원인 신고서?  (0) 2024.02.02
온천 다녀옴  (0) 2024.01.28
Posted by 구차니
Programming/golang2024. 2. 8. 11:31

switch로 두가지 형태가 존재하는데

하나는 일반적인 변수에 대한 분기를 처리하는 것이고

switch variable {
case variable_type_value :
}

 

다른 하나는 switch의 탈을 쓴 if문?

switch {
case statement:
}

 

혼합해서 해보니

statement 쪽에서 숫자를 int 형으로 변환할 수 없다고 에러가 발생한다.

switch variable {
case variable_type_value :

case statement:
}

 

[링크 : https://hazarddev.tistory.com/69]

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

golang runtime.GOMAXPROCS()  (0) 2024.02.15
golang echo 템플릿 파일로 불러오기  (0) 2024.02.14
golang switch - fallthrough  (0) 2024.02.08
golang break, continue 라벨 그리고 goto  (0) 2024.02.08
golang import  (0) 2024.02.07
Posted by 구차니
Programming/golang2024. 2. 8. 11:26

어우.. 키워드 긴것 보소 -_-

 

fallthrough 하면 c에서 break 없이 case를 붙이면 조건 비교는 없이 다음 case를 실행했었는데

golang 에서도 조건을 보진 않고 그냥 다음 문장을 수행한다.

다만 가장 마지막 case에는 당연히(?) fallthrough를 넣으면 에러가 발생한다.

package main

import "fmt"

func main() {
    i := 45
    switch {
    case i < 10:
        fmt.Println("i is less than 10")
        fallthrough
    case i < 50:
        fmt.Println("i is less than 50")
        fallthrough
    case i < 100:
        fmt.Println("i is less than 100")
    }
}

 

Output

i is less than 50
i is less than 100

[링크 : https://golangbyexample.com/fallthrough-keyword-golang/]

[링크 : https://pyrasis.com/book/GoForTheReallyImpatient/Unit19/02]

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

golang echo 템플릿 파일로 불러오기  (0) 2024.02.14
golang switch  (0) 2024.02.08
golang break, continue 라벨 그리고 goto  (0) 2024.02.08
golang import  (0) 2024.02.07
golang iota  (0) 2024.02.07
Posted by 구차니
Programming/golang2024. 2. 8. 11:03

어우.. 문법이 이해하기 좀 빡세네?

c에서 goto는 해당 위치로 간다는게 직관적이었지만 golang에서 break, continue는 딱 와닫지 않는다.

 

특히나 예제에서 2중 루프를 돌리면 해당 라벨로 점프하는 느낌이 아니라

nested loop만 빠져나가는 것 같은데 어떻게 이해해야하려나?

반대로.. 해당 루프를 continue 하는거니까, 내부 loop를 break 하는걸로 이해하면 되나?

var err error
timeout := time.After(30 * time.Second)

sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, os.Interrupt)

complete := make(chan error)
go launchProcessor(complete)

Loop:
    for {
        select {
        case <-sigChan:
           atomic.StoreInt32(&shutdownFlag, 1)
           continue

        case <-timeout:
            os.Exit(1)

        case err = <-complete:
            break Loop
        }
    }

return err

 

    guestList := []string{"bill", "jill", "joan"}
    arrived := []string{"sally", "jill", "joan"}

CheckList:
    for _, guest := range guestList {
        for _, person := range arrived {
            fmt.Printf("Guest[%s] Person[%s]\n", guest, person)

            if person == guest {
                fmt.Printf("Let %s In\n", person)
                continue CheckList
            }
        }
    }

[링크 : https://www.ardanlabs.com/blog/2013/11/label-breaks-in-go.html]

[링크 : https://pyrasis.com/book/GoForTheReallyImpatient/Unit17/01]

 

goto는 한 함수 내에서 label이 유효하여 아래와 같이 다른 함수를 넘나들순 없게 구성되었다고 한다.

c와의 차이점이라고 해야하나..

package main

import "fmt"

func main() {
learnGoTo()
}

func learnGoTo() {
fmt.Println("a")
goto FINISH
fmt.Println("b")

}

func test() {
FINISH:
fmt.Println("c")
}

[링크 : https://golangbyexample.com/goto-statement-go/]

[링크 : https://pyrasis.com/book/GoForTheReallyImpatient/Unit18]

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

golang switch  (0) 2024.02.08
golang switch - fallthrough  (0) 2024.02.08
golang import  (0) 2024.02.07
golang iota  (0) 2024.02.07
golang echo session check  (0) 2024.02.06
Posted by 구차니