티스토리 뷰
하드웨어 관리, 드라이버 관리에 관한 내용이다.
재부팅하지 않고 scsi 정보 메모리에 로드하기.
/proc 는 메모리, cpu에 대한 정보를 갖고있는 디렉토리. 디스크에 저장되어있지 않아 용량이 0이다. OS에 직접적으로 연결되어 있어 정보를 human readable하게 보여준다고 생각하자.
/sys 는 디바이스에 관한 정보들을 가지고 있다.
module 은 kernel code 이고, 넣었다 뺏다 할 수 있다. 등 내용이있다.
[root@localhost log]# ls
anaconda btmp dmesg grubby_prune_debug messages secure tuned
audit chrony dmesg.old lastlog ppp spooler wtmp
boot.log cron firewalld maillog rhsm tallylog
# dmesg, 현재 부팅되면서 저장된 진단메세지, /var/log/dmesg, 명령어 'dmesg' 로도 가능
# dmesg.old, 바로 그전 진단메세지
# 특정 시점을 저장하고 싶다면, 다른이름으로 저장하는게 좋음. dmesg_YYMMDD
# 마운트
[root@station16 proc]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-root 8.0G 3.9G 4.2G 48% /
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.9G 21M 7.9G 1% /dev/shm
tmpfs 7.9G 8.9M 7.9G 1% /run
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
/dev/mapper/vg0-tmp 1014M 33M 982M 4% /tmp
/dev/mapper/vg0-var 2.0G 180M 1.9G 9% /var
/dev/sda3 100G 1.3G 99G 2% /var/lib/libvirt/images
/dev/sda1 497M 153M 345M 31% /boot
tmpfs 1.6G 8.0K 1.6G 1% /run/user/0
# 시스템에 관련된 정보들은 사이즈가 0이다. 그러나 실행 잘 된다.
[root@station16 ~]# cd /proc
[root@station16 proc]# ls -al
total 0
dr-xr-xr-x. 253 root root 0 Jul 17 11:50 .
dr-xr-xr-x. 20 root root 281 Jul 17 11:51 ..
dr-xr-xr-x. 9 root root 0 Jul 17 11:50 1
dr-xr-xr-x. 9 root root 0 Jul 17 11:50 10
dr-xr-xr-x. 9 root root 0 Jul 17 11:50 1043
dr-xr-xr-x. 9 root root 0 Jul 17 11:50 1046
dr-xr-xr-x. 9 root root 0 Jul 17 11:50 1048
dr-xr-xr-x. 9 root root 0 Jul 17 11:50 1050
dr-xr-xr-x. 9 root root 0 Jul 17 11:50 1060
dr-xr-xr-x. 9 root root 0 Jul 17 11:50 1064
dr-xr-xr-x. 9 root root 0 Jul 17 11:50 1067
dr-xr-xr-x. 9 root root 0 Jul 17 11:50 1068
dr-xr-xr-x. 9 root root 0 Jul 17 11:50 1071
dr-xr-xr-x. 9 root root 0 Jul 17 11:50 1072
dr-xr-xr-x. 9 root root 0 Jul 17 11:50 11
dr-xr-xr-x. 9 root root 0 Jul 17 11:50 115
...
# 확인해보면, 메모리에 로드된 정보들이 사람들이 읽기 쉽게 재 정리 되어있다.
# 그외 pid 파일들돌 확인할 수 있었다.
[root@station16 proc]# cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 16
model : 4
model name : AMD Phenom(tm) II X4 955 Processor
stepping : 3
microcode : 0x10000c8
cpu MHz : 800.000
cache size : 512 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
...
# 또 다른 시스템 정보 확인해보기, 즉 /proc 또는 /sys 에서 시스템 정보(HW) 확인가능하다.
[root@station16 sys]# cd /
[root@station16 /]# cd sys
[root@station16 sys]# ls
block bus class dev devices firmware fs hypervisor kernel module power
[root@station16 sys]# cd class
[root@station16 class]# ls
ata_device devcoredump i2c-adapter misc raw thermal
ata_link dma input msr rtc tpm
ata_port dmi iommu net scsi_device tty
backlight drm kfd pci_bus scsi_disk usbmon
bdi gpio leds pcmcia_socket scsi_generic vc
block graphics macvtap powercap scsi_host vtconsole
bsg hidraw mdio_bus power_supply sound watchdog
cpuid hwmon mem pwm spi_master wmi
[root@station16 class]# cd scsi_disk
[root@station16 scsi_disk]# ls
0:0:0:0 0:0:0:1 0:0:0:2 0:0:0:3 3:0:0:0
[root@station16 scsi_disk]# cd ..
[root@station16 class]# ls
ata_device devcoredump i2c-adapter misc raw thermal
ata_link dma input msr rtc tpm
ata_port dmi iommu net scsi_device tty
backlight drm kfd pci_bus scsi_disk usbmon
bdi gpio leds pcmcia_socket scsi_generic vc
block graphics macvtap powercap scsi_host vtconsole
bsg hidraw mdio_bus power_supply sound watchdog
cpuid hwmon mem pwm spi_master wmi
[root@station16 class]# cd net
[root@station16 net]# ls
enp2s0 lo virbr0 virbr0-nic vnet0
# CMOS에 저장된 정보들 확인하기. system HW에 관한 low-level details를 확인할 수 있는 명령어
[root@station16 Desktop]# dmidecode -s bios
Invalid string keyword: bios
Valid string keywords are:
bios-vendor
bios-version
bios-release-date
system-manufacturer
system-product-name
system-version
system-serial-number
system-uuid
baseboard-manufacturer
baseboard-product-name
baseboard-version
baseboard-serial-number
baseboard-asset-tag
chassis-manufacturer
chassis-type
chassis-version
chassis-serial-number
chassis-asset-tag
processor-family
processor-manufacturer
processor-version
processor-frequency
[root@station16 Desktop]# dmidecode -s bios-version
6.09
# 커널 HW 정보는 /sys 에서... /sys 는 디스크에 저장된 것이 아니다.
/sys/block/ : block I/O를 하는 장치들에 관한 정보를 준다. buffer(메모리에서 디스크에 쓰면서 보여주기보다, (디스크가 느리므로 병목현상이 발생) 메모리에 일정 부분 buffer로 할애하여 사용. 즉, 속도를 완충)를 사용하는 비동기식 I/O { disk, CD, DVD...} <-> character device(raw device){printer, terminal, console } : buffer에 쓰이지않고 장치에 direct로 통신하여 보여줌
/sys/bus/ : memory, CPU 등이 연산한 결과들이 SBA와 LBA를 통해 전송되는 slot에 끼우는 cable bus의 종류를 보여줌 {PCI, SCSI, USB, etc }
/sys/module/
: 커널 모듈을 확인함.커널 모듈은 드라이버 realtek, audio card, lancard 들을 설치시마다 커널을
열어주므로 커널에 append 하므로 드라이버 설치시마다 커널의 정보가 달라진다. (제대로 이해한건지 모르겠다...)
[root@station16 Desktop]# cd /boot
[root@station16 boot]# ls
config-3.10.0-514.26.1.el7.x86_64
grub
grub2
initramfs-0-rescue-62261cc0f2d64250845a28d2aa3e5461.img
initramfs-3.10.0-514.26.1.el7.x86_64.img
initrd-plymouth.img
symvers-3.10.0-514.26.1.el7.x86_64.gz
System.map-3.10.0-514.26.1.el7.x86_64
vmlinuz-0-rescue-62261cc0f2d64250845a28d2aa3e5461
vmlinuz-3.10.0-514.26.1.el7.x86_64
#
부팅시 인식한 장치를 확인하고 device file을 생성하는 "udev", 드라이버 이름을 수정할 수도 있다. 아래와 같다.
파일명은 마음대로 해도되나 뒤에는 .rules확장자를 붙여줘야한다. udev가 읽는 순은 앞의 사전식 순이라서 맨 뒤가 최종
적용되는 것이다. 아래의 에를 확인하자.
[root@localhost ~]# cd /etc/udev/rules.d
[root@localhost rules.d]# ls
70-persistent-ipoib.rules
[root@localhost rules.d]# vi 60-net.rules
...추가 ...
KERNEL=="eth*",SUBSYSTEM=="net",DRIVERS=="?*",ATTR{type}=="1",ATTR{address}=="52:54:00:33:26:5a",ACTION=="add",NAME="mylan0"
# reboot 후 명령어 "ip a"를 수행하면 mylan0으로 이름을 바뀐것으로 확인하였다.
... 생략
2: mylan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:33:26:5a brd ff:ff:ff:ff:ff:ff
inet 192.168.122.215/24 brd 192.168.122.255 scope global dynamic mylan0
valid_lft 3478sec preferred_lft 3478sec
inet6 fe80::5054:ff:fe33:265a/64 scope link
# udev에서 파일이 추가된 것을 확인할 수 있다.
[root@localhost ~]# cd /etc/udev/rules.d
[root@localhost rules.d]# ls
60-net.rules 70-persistent-ipoib.rules
# 이더넷카드는 항상 eth# 로 이름이 지어졌다. 7버전 이상의 CENTOS에서는 내장 랜카드는 enp2s0로, 따로 장착한 랜카드는 eth#로 네이밍이 된다.
# udev의 역할은 크지만, 사용할 경우는 흔하지 않다.
=====쉬는시간 매니저 생일 케이크 파티
Managing Linux Device Files, 블록 디바이스 관리
Usually in /dev/
Creating device files (1) at install time (RPM, Redhat Package Manager), (2) mknod, (3) dynamically with udev
(3)이 일반적이다.
# 아래는 character device인지 block device인지 알 수 있다.또한 sda disk의 major 번호 minor 번호를 확인할 수있다. 파티션은은 최대 15개 그러므로 sdb는 16부터 시작한다.
[root@station16 ~]# ll /dev/pts/0
crw--w----. 1 root tty 136, 0 Jul 17 14:59 /dev/pts/0
[root@station16 ~]# ll /dev/sda
brw-rw----. 1 root disk 8, 0 Jul 17 11:50 /dev/sda
[root@station16 ~]# ls -l /dev/sda?
brw-rw----. 1 root disk 8, 1 Jul 17 11:50 /dev/sda1
brw-rw----. 1 root disk 8, 2 Jul 17 11:50 /dev/sda2
brw-rw----. 1 root disk 8, 3 Jul 17 11:50 /dev/sda3
# 아래는 또 여러종류의 device 들이다. 각자 다들 Major, Minor number가 있다.
Null device (data sent here is discarded) : /dev/null Major, Minor 번호 있음.
Zero device (outputs infinite stream of zeros) : /dev/zero
Random device (non-deterministic random number generation) : /dev/random
Random device (faster, less secure random number generation) : /dev/urandom
# dd는 block image들을 복사할 떄 쓰이는 명령어이다.cp
[root@station16 ~]# dd if=/dev/sda of=/dev/null bs=1024
^C539174+0 records in
539173+0 records out
552113152 bytes (552 MB) copied, 4.81503 s, 115 MB/s
# 디스크 날릴때 쓰는법. 하면 큰일난다.
[root@station16 ~]# dd if=/dev/zero of="disk name" bs=1024
#tree 커맨드를 활용하여 /dev/disk 디렉토리 확인. 없을경우 tree 설치, yum -y install tree
[root@station16 ~]# tree /dev/disk
/dev/disk
├── by-id
│ ├── ata-hp_CDDVDW_TS-H653T_R7106GGZC69733 -> ../../sr0
│ ├── ata-ST3500418AS_5VMPX36V -> ../../sda
│ ├── ata-ST3500418AS_5VMPX36V-part1 -> ../../sda1
│ ├── ata-ST3500418AS_5VMPX36V-part2 -> ../../sda2
│ ├── ata-ST3500418AS_5VMPX36V-part3 -> ../../sda3
│ ├── dm-name-vg0-root -> ../../dm-0
│ ├── dm-name-vg0-swap -> ../../dm-1
│ ├── dm-name-vg0-tmp -> ../../dm-2
│ ├── dm-name-vg0-var -> ../../dm-3
│ ├── dm-uuid-LVM-AbwnYAoKCyfcKH4HfK0gdgx3LcISCyBWe1ZFJ3hvbNTSZtBYCDjL7dKNfyZ75Sdq -> ../../dm-1
│ ├── dm-uuid-LVM-AbwnYAoKCyfcKH4HfK0gdgx3LcISCyBWEWWUuAG8KuIk8U0onBcfaHVj5Ufp8yNF -> ../../dm-3
│ ├── dm-uuid-LVM-AbwnYAoKCyfcKH4HfK0gdgx3LcISCyBWEZELO1NBbwPCEGhsPdVm923sbJdi
...
# Block Device들을 확인하는데엔 tree 명령어보다 lsblk, blkid가 쉽다.
[root@station16 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 34.2G 0 part
│ ├─vg0-root 253:0 0 8G 0 lvm /
│ ├─vg0-swap 253:1 0 512M 0 lvm [SWAP]
│ ├─vg0-tmp 253:2 0 1G 0 lvm /tmp
│ └─vg0-var 253:3 0 2G 0 lvm /var
└─sda3 8:3 0 100G 0 part /var/lib/libvirt/images
sr0 11:0 1 1024M 0 rom
#옵션
f를 넣으면 UUID를 확인가능하다. disk 네 개가 연결되어 있을 때 sda, sdb, sdc, sdd (scsi disk
a, b, c.. 가상환경인 경우 virtual disk a, b, ... vda, vdb)가 있다. 근데 디스크를 뺏다 끼고
서버를 껏다키면 sdd가 sdc가 되거나 그런일 이 있다. 그러면 /etc/fstab 에서 디스크 이름으로 /dev/sda 이렇게
마운트하면 부트가 안될수 있다. 그럴 때 UUID 를 이용하여 /etc/fstab에 쓰면된다
[root@station16 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 869772b6-b3e6-4c45-8b83-56d22a41c9d8 /boot
├─sda2 LVM2_mem 6OFzRX-vjWQ-AR5n-UeNS-bPDK-cN1k-SH9Omd
│ ├─vg0-root xfs c033ac2f-8cd5-49d0-99e5-ebdc4296387b /
│ ├─vg0-swap swap 85f113ea-443d-4a24-99e5-f87bc577289d [SWAP]
│ ├─vg0-tmp xfs fe5bb8c1-1fa9-409b-88a4-fc303a2087f6 /tmp
│ └─vg0-var xfs 105fa7c1-c3cb-4ea0-a943-51a7e9d935a9 /var
└─sda3 xfs 4b34d8ac-6357-43ed-a1e2-0f1cd8c53cdd /var/lib/libv
sr0
#
장착된 디바이스를 확인하는 lsscsi 명령어가 설치안되어있고, root 계정이아니라면 cat을 활용하여 아래처럼 확인할 수
있다. lsscsi 수행시 1번째 필드에서 확인가능한 번호의 정보는 다음과 같다. [HOST:channel:target:LUN],
host number는 장치들을 인식하는 번호이다. target number는 동일한 host 를 공유해 사용하는 인터페이스
장치들을 식별하는 번호이다. host 해당 포트가 고장나면 동일한 host 포트 장치들은 사용할 수 없다. channel
number는 이제는 사용되지 않아 대개 0이다.
[root@station16 ~]# lsscsi
[0:0:0:0] disk Generic- SD/MMC 1.00 /dev/sdb
[0:0:0:1] disk Generic- Compact Flash 1.01 /dev/sdc
[0:0:0:2] disk Generic- SM/xD-Picture 1.02 /dev/sdd
[0:0:0:3] disk Generic- MS/MS-Pro 1.03 /dev/sde
[3:0:0:0] disk ATA ST3500418AS HP35 /dev/sda
[5:0:0:0] cd/dvd hp CDDVDW TS-H653T H6D1 /dev/sr0
[root@station16 ~]# cat /proc/scsi/scsi
Attached devices:
Host: scsi3 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: ST3500418AS Rev: HP35
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi5 Channel: 00 Id: 00 Lun: 00
Vendor: hp Model: CDDVDW TS-H653T Rev: H6D1
Type: CD-ROM ANSI SCSI revision: 05
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: Generic- Model: SD/MMC Rev: 1.00
Type: Direct-Access ANSI SCSI revision: 00
Host: scsi0 Channel: 00 Id: 00 Lun: 01
Vendor: Generic- Model: Compact Flash Rev: 1.01
Type: Direct-Access
# 가상환경에서 scsi 디스크 추가후, 제거하는 방법을 수행해봤다. 제거하는 방법은 명령어가 따로없고 echo이다.
[root@localhost ~]# lsscsi
[2:0:0:0] disk QEMU QEMU HARDDISK 1.5. /dev/sda
[root@localhost ~]# echo 1 > /sys/class/scsi_device/2:0:0:0/device/delete
[root@localhost ~]# lsscsi
# 재부팅 하지 않고 다시 디스크 장치 인식하기. unix에서는 ioscan명령어를 통해 수행할 수 있었다. 즉 disk장착후 재부팅안해도된다. 가상이든 실제이든. host#, #는 host number를 말해준다.
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
[root@localhost ~]# lsscsi
[2:0:0:0] disk QEMU QEMU HARDDISK 1.5. /dev/sda
# 한개 더 생성해보고 해보았다.
[root@localhost ~]# lsscsi
[2:0:0:0] disk QEMU QEMU HARDDISK 1.5. /dev/sda
[2:0:0:1] disk QEMU QEMU HARDDISK 1.5. /dev/sdb
[root@localhost ~]# echo 1 > /sys/class/scsi_device/2:0:0:1/device/delete
[root@localhost ~]# lsscsi
[2:0:0:0] disk QEMU QEMU HARDDISK 1.5. /dev/sda
# 명령어 dmesg를 활용하여 sdb 관련된 작업이 수행된지 확인해보았다. pipe line으로 tail까지 수행
[root@localhost ~]# dmesg |tail -10
[ 4776.356248] virtio-pci 0000:00:0a.0: irq 36 for MSI/MSI-X
[ 4776.356313] virtio-pci 0000:00:0a.0: irq 37 for MSI/MSI-X
[ 4783.962092] scsi 2:0:0:1: Direct-Access QEMU QEMU HARDDISK 1.5. PQ: 0 ANSI: 5
[ 4783.964763] sd 2:0:0:1: Attached scsi generic sg1 type 0
[ 4783.969203] sd 2:0:0:1: [sdb] 6291456 512-byte logical blocks: (3.22 GB/3.00 GiB)
[ 4783.978677] sd 2:0:0:1: [sdb] Write Protect is off
[ 4783.978690] sd 2:0:0:1: [sdb] Mode Sense: 63 00 00 08
[ 4783.978861] sd 2:0:0:1: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 4783.989739] sd 2:0:0:1: [sdb] Attached SCSI disk
[ 4816.556881] sd 2:0:0:1: [sdb] Synchronizing SCSI cache
======== 쉬는시간
USB Devices 관리
[root@station16 ~]# lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 058f:6362 Alcor Micro Corp. Flash Card Reader/Writer
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 03f0:0024 Hewlett-Packard KU-0316 Keyboard
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 0461:4d0f Primax Electronics, Ltd HP Optical Mouse
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
# usb를 사용하게 하는것보다 못쓰게 하는 것이 더 자주 쓰인다. 보안 이슈. 특정 usb를 못 쓰게 하는 것하는데 유용하다. 아래를 참조
usbhid.ko : human-interface devices, 키보드, 마우스, 조이스틱
usb-storage.ko : usb 대용량 저장장치
usblp.ko :프린터
usbserial.ko : USB to serial port adapters
# 여기는 디스크에 저장된 모듈들 이다. 해당 장치들이 장착되면 메모리에 로드된다.
[root@station16 ~]# cd /lib/modules/*/kernel/drivers/usb/storage
[root@station16 storage]# ls
uas.ko ums-eneub6250.ko ums-karma.ko ums-sddr55.ko
ums-alauda.ko ums-freecom.ko ums-onetouch.ko ums-usbat.ko
ums-cypress.ko ums-isd200.ko ums-realtek.ko usb-storage.ko
ums-datafab.ko ums-jumpshot.ko ums-sddr09.ko
# 모듈을 못 사용하게 블랙리스트 등록할 수 있다.
File : /etc/modprobe.d/blacklist.conf
blacklist usb_storage
Kernel Modules
# 명령어는 lsmod, insmod, rmmod 이 있다. r8169 모듈은 ethernet 드라이버다. realtek
[root@station16 ~]# lsmod |grep r8169
r8169 80945 0
mii 13934 1 r8169
[root@station16 ~]# modinfo r8169
filename: /lib/modules/3.10.0-514.26.1.el7.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko
firmware: rtl_nic/rtl8107e-2.fw
firmware: rtl_nic/rtl8107e-1.fw
firmware: rtl_nic/rtl8168h-2.fw
firmware: rtl_nic/rtl8168h-1.fw
firmware: rtl_nic/rtl8168g-3.fw
....
# 모듈 제거와 다시 설치. 해당 모듈 serio_raw는 module dependencies 때문에 재설치가 안된다.
# 모듈이 딘펜던시 있는지 확인하는법 modinfo "모듈". 예로 modinfo nfs 수행시 출력화면에
# depends: fscache,sunrpc,lockd 행이 출력된다.nfs가 디펜던시 있는 모듈들이 출력된다.
[root@station16 ~]# rmmod r8169
[root@station16 ~]# lsmod |grep r8169
[root@station16 ~]# lsmod |grep serio_raw
serio_raw 13462 0
[root@station16 ~]# rmmod serio_raw
[root@station16 ~]# insmod serio_raw
insmod: ERROR: could not load module serio_raw: No such file or directory
# modprobe 로 설치하기. dependencies 문제 해결하여 설치한다.
[root@station16 ~]# modprobe serio_raw
[root@station16 ~]# lsmod |grep serio_raw
serio_raw 13462 0
# modprobe는 /lib/modules/$(uname -r)/modules.dep 에서 dependencies 들을 저장해 놓는다. 그러나 만약 그 파일이 손상되었다면 depmod 명령어로 해결할 수 있다. 또한 modprobe는 -r 옵션으로 모듈 dependencies를 고려한 모듈 제거도 가능하다.
sysctl 명령어를 통해 Kernel parameter 변경할 수 있다.
# 생성 할 수 있는 최대 파일 갯수 제한된 변수. 변수 설정하기(메모리에서) 디스크에 설정 저장하기.
[root@localhost ~]# sysctl fs.file-max
fs.file-max = 300000
[root@localhost ~]# sysctl -w fs.file-max=150000
fs.file-max = 150000
[root@localhost ~]# vi /etc/sysctl.conf
...
fs.file-max=250000 // 저장
[root@localhost ~]# sysctl fs.file-max
fs.file-max = 250000
'IoT 과정' 카테고리의 다른 글
SYSTEMD OVERVIEW (0) | 2017.07.18 |
---|---|
커널 옵션 적응하기, 드라이버 편집하기 등 task (0) | 2017.07.17 |
Enterprise Linux System - Adnministration 시작 (0) | 2017.07.17 |
Managing Input and Output (0) | 2017.07.07 |
Functions and Function Libraries (0) | 2017.07.07 |
- Total
- Today
- Yesterday
- Arena
- paul wilton
- beginning javascript
- Simulation
- 데이터 중심 애플리케이션 설계
- 대규모 시스템 설계 기초
- 시뮬레이션
- Discrete Mathematics
- Propositional and Predicate Logic
- 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
- 아레나시뮬레이션
- 백준
- arena simulation
- 최단경로 알고리즘
- flutter
- 아레나
- rosen
- 그라파나
- 자바스크립트
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 조합 코딩
- grafana cloud
- Trie
- 자바스크립트 예제
- 명제논리
- 이산 수학
- javascript
- 이산수학
- 아레나 시뮬레이션
- 로젠
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |