interactive python 해서 ipython인가?

notebook은 ipython 꺼였는데 jupyter의 일부가 되었다고 한다.

Installing IPython

There are multiple ways of installing IPython. This page contains simplified installation instructions that should work for most users. Our official documentation contains more detailed instructions for manual installation targeted at advanced users and developers.
If you are looking for installation documentation for the notebook and/or qtconsole, those are now part of Jupyter.

[링크 : https://ipython.org/install.html]

[링크 : https://pypi.org/project/ipython/]

[링크 : https://yujuwon.tistory.com/m/entry/ipython-노트북-설치하기]

'Programming > python(파이썬)' 카테고리의 다른 글

python tcp 서버 예제  (0) 2024.01.22
파이썬 소켓 예제  (0) 2024.01.17
파이썬 가상환경  (0) 2024.01.09
pyplot legend picking  (0) 2023.10.05
matplotlib  (0) 2023.10.04
Posted by 구차니

이것저것 조사해보는데

무식하지만 가장 확실한(?) docker로 버전별로 혹은 프로젝트 별로 생성하는 것부터

python 에서 제공하는 venv

venv를 확장해서 사용하는 virtualenv

그리고 conda 정도로 정리되는 듯.

 

 

conda

[링크 : https://m.blog.naver.com/jonghong0316/221683053696]

 

virtualenv, venv

[링크 : https://jaemunbro.medium.com/python-virtualenv-venv-설정-aaf0e7c2d24e]

 

conda, venv

[링크 : https://yongeekd01.tistory.com/39]

 

venv, pipenv, conda, docker(이걸.. 가상이라고 하긴 해야 하는데.. 해줘야 하는거 맞....나?)

[링크 : https://dining-developer.tistory.com/21]

 

virtualenv, pyenv, pipenv

[링크 : https://jinwoo1990.github.io/dev-wiki/python-concept-3/]

 

+

conda - Conda provides package, dependency, and environment management for any language.

파이썬 전용이 아닌가?

[링크 : https://docs.conda.io/en/latest/]

[링크 : https://anaconda.org/]

[링크 : https://anaconda.org/anaconda/conda]

 

+

virtualenv

is slower (by not having the app-data seed method),
is not as extendable,
cannot create virtual environments for arbitrarily installed python versions (and automatically discover these),
is not upgrade-able via pip,
does not have as rich programmatic API (describe virtual environments without creating them).

[링크 : https://virtualenv.pypa.io/en/latest/]

 

+

venv

[링크 : https://docs.python.org/3/library/venv.html] 3.12.1

 

venv는 3.7 이후부터 사용이 가능한 것으로 보임. 즉, 버전별로 호환성은 없을 가능성이 있음

pyvenv 스크립트는 파이썬 3.6 에서 폐지되었고, 가상 환경이 어떤 파이썬 인터프리터를 기반으로 하는지에 대한 잠재적인 혼동을 방지하기 위해 python3 -m venv를 사용합니다.

[링크 : https://docs.python.org/ko/3.7/library/venv.html]

'Programming > python(파이썬)' 카테고리의 다른 글

파이썬 소켓 예제  (0) 2024.01.17
ipython notebook -> jupyter notebook  (0) 2024.01.11
pyplot legend picking  (0) 2023.10.05
matplotlib  (0) 2023.10.04
pyplot  (0) 2023.10.04
Posted by 구차니
Programming/C Win32 MFC2023. 12. 18. 17:49

또 이상한 에러가 보이길래 멘붕..

다리 다치면서 머리도 같이 다친건가 ㅠㅠ

 

free(): invalid next size (normal)
중지됨 (코어 덤프됨)

 

간단하게 malloc() 은 100 해놓고 101을 쓰면 glibc 에서 malloc 한것 이상으로 썼다고 free() 할 때 에러를 발생한다.

그냥.. 해당 메모리 번지에 접근할 때 에러내면 안되냐?

할당된 메모리를 넘어서 썼을 경우에, 해당 메모리를 해제 할때 발생
메모리를 overwrite 하는지 확인 할 것

[링크 : https://m.blog.naver.com/sysganda/30103851649]

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

c에서 cpp 함수 불러오기  (0) 2023.01.04
MSB / LSB 변환  (0) 2022.08.29
kore - c restful api server  (0) 2022.07.07
fopen exclusivly  (0) 2021.07.09
vs2019 sdi , mdi 프로젝트 생성하기  (0) 2021.07.08
Posted by 구차니
Programming/golang2023. 12. 8. 11:30

logo.png나 logo.svg가 읽히지 않는 이상한 문제 발생

 

확인해보니 내부적으로 skipper를 이용해 log로 시작하면 스킵하도록 해놨는데

그걸 HasPrefix() 로 구현하다 보니, logo.svg나 log.png 에서 log로 시작하니 스킵되어 발생한 해프닝(?)

/log를 /log/로 바꾸면 문제없이 logo.png도 읽어온다.

e.Use(middleware.StaticWithConfig(middleware.StaticConfig{
Root: "html",
Skipper: func(c echo.Context) bool {
return strings.HasPrefix(c.Request().RequestURI, "/log")
},
}))

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

golang swagger part 2  (0) 2024.01.18
golang용 swagger  (0) 2024.01.17
golang 타입 땜시 짜증  (0) 2023.11.10
golang 타입 캐스팅 제약(?)  (0) 2023.11.09
golang 배열과 슬라이스  (0) 2023.11.08
Posted by 구차니
Programming/web 관련2023. 11. 29. 15:23

exif의 orientation 정보를 이용하여

웹에서 이미지를 정상적인 방향으로 출력할 수 있을 듯?

[링크 : https://github.com/exif-js/exif-js]

 

const orientation = EXIF.getTag( fileInfo, "Orientation" );

[링크 : https://blog.naver.com/hj_kim97/222309039397]

Posted by 구차니
Programming/golang2023. 11. 10. 14:30

아놔.. 너무 심하게 강형 언어인거 아닌가 싶을 정도로

별별것 다 트집을 잡아서 명시적으로 형변환을 하게 만든다

time.Sleep(2 * time.Second) // 정상 작동

var update_sec int = 2
time.Sleep(update_sec * time.Second) // 에러

time.Sleep(time.Duration(update_sec) * time.Second) // 정상 작동

[링크 : https://jusths.tistory.com/71]

 

아니면 내가 너무 golang을 golang 답게 안쓰는건가?

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

golang용 swagger  (0) 2024.01.17
golang echo static web / logo.* 안돼?  (0) 2023.12.08
golang 타입 캐스팅 제약(?)  (0) 2023.11.09
golang 배열과 슬라이스  (0) 2023.11.08
golang ini 지원  (0) 2023.11.07
Posted by 구차니
Programming/golang2023. 11. 9. 10:58

눈에도 안들어 온다 으아아

[링크 : https://stackoverflow.com/questions/28040896/why-can-not-convert-sizebyte-to-string-in-go]

 

슬라이스를 배열로 하려면 copy 해야 하는 듯

package main
import "fmt"

//create main function to execute the program
func main() {
   var slice []int // initialize slice
   slice = append(slice, 10) //fill the slice using append function
   slice = append(slice, 20)
   slice = append(slice, 30)
   
   // Convert the slice to an array
   array := [3]int{} //initialized an empty array
   copy(array[:], slice) //copy the elements of slice in newly created array
   fmt.Println("The slice is converted into array and printed as:")
   fmt.Println(array) // prints the output: [10 20 30]
}

[링크 : https://www.tutorialspoint.com/golang-program-to-convert-slice-into-array]

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

golang echo static web / logo.* 안돼?  (0) 2023.12.08
golang 타입 땜시 짜증  (0) 2023.11.10
golang 배열과 슬라이스  (0) 2023.11.08
golang ini 지원  (0) 2023.11.07
golang 함수인자에 배열 포인터  (0) 2023.11.07
Posted by 구차니
Programming/golang2023. 11. 8. 22:34

다시 a tour of go 봐야 할 듯..

 

Arrays
The type [n]T is an array of n values of type T.

The expression

var a [10]int
declares a variable a as an array of ten integers.

An array's length is part of its type, so arrays cannot be resized. This seems limiting, but don't worry; Go provides a convenient way of working with arrays.

[링크 : https://go.dev/tour/moretypes/6]

 

 

Slices
An array has a fixed size. A slice, on the other hand, is a dynamically-sized, flexible view into the elements of an array. In practice, slices are much more common than arrays.

The type []T is a slice with elements of type T.

A slice is formed by specifying two indices, a low and high bound, separated by a colon:

a[low : high]
This selects a half-open range which includes the first element, but excludes the last one.

The following expression creates a slice which includes elements 1 through 3 of a:

a[1:4]

[링크 : https://go.dev/tour/moretypes/7]

 

 

크기가 정해지면 array, 정해지지않으면 slice인가?

Since you didn't specify the length, it is a slice.
An array type definition specifies a length and an element type: see "Go Slices: usage and internals"

[링크 : https://stackoverflow.com/questions/29361377/creating-a-go-slice-without-make]

 

 

갑자기 length와 capacity?!

A slice literal is declared just like an array literal, except you leave out the element count:

letters := []string{"a", "b", "c", "d"}

slice can be created with the built-in function called make, which has the signature,

func make([]T, len, cap) []T

where T stands for the element type of the slice to be created. The make function takes a type, a length, and an optional capacity. When called, make allocates an array and returns a slice that refers to that array.

var s []byte
s = make([]byte, 5, 5)
// s == []byte{0, 0, 0, 0, 0}

When the capacity argument is omitted, it defaults to the specified length. Here’s a more succinct version of the same code:

s := make([]byte, 5)

The length and capacity of a slice can be inspected using the built-in len and cap functions.

len(s) == 5
cap(s) == 5

[링크 : https://go.dev/blog/slices-intro]

 

 

실제 사용시에 capacity까지 알 필요는 없을려나?

capacity: 실제 메모리에 할당된 공간입니다. 만약 슬라이스에 요소를 추가하여 capacity가 가득차면 자동으로 늘어납니다.

[링크 : https://www.pymoon.com/entry/Go-튜토리얼-배열-슬라이스]

[링크 : https://phsun102.tistory.com/82]

[링크 : https://go.dev/tour/moretypes/11]

 

 

2차원 배열은 [][]type 으로 생성하면되는데

make를 통해서도 2차원 배열이 생성가능한진 모르겠다

package main

import "fmt"

func main() {
    // Step 1: create empty collection.
    values := [][]int{}

    // Step 2: these are the first two rows.
    // ... Append each row to the two-dimensional slice.
    row1 := []int{1, 2, 3}
    row2 := []int{4, 5, 6}
    values = append(values, row1)
    values = append(values, row2)

    // Step 3: display first row, and second row.
    fmt.Println("Row 1")
    fmt.Println(values[0])
    fmt.Println("Row 2")
    fmt.Println(values[1])

    // Step 4: access an element.
    fmt.Println("First element")
    fmt.Println(values[0][0])
}
Row 1
[1 2 3]
Row 2
[4 5 6]
First element
1

[링크 : https://www.dotnetperls.com/2d-go]

 

 

 

make와 := []type 두개가 동등하다면 가능할지도?

package main

import (
"fmt"
"strings"
)

func main() {
// Create a tic-tac-toe board.
board := [][]string{
[]string{"_", "_", "_"},
[]string{"_", "_", "_"},
[]string{"_", "_", "_"},
}

// The players take turns.
board[0][0] = "X"
board[0][2] = "X"
board[1][0] = "O"
board[1][2] = "X"
board[2][2] = "O"


for i := 0; i < len(board); i++ {
fmt.Printf("%s\n", strings.Join(board[i], " "))
}
}
X _ X
O _ X
_ _ O

[링크 : https://go.dev/tour/moretypes/14]

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

golang 타입 땜시 짜증  (0) 2023.11.10
golang 타입 캐스팅 제약(?)  (0) 2023.11.09
golang ini 지원  (0) 2023.11.07
golang 함수인자에 배열 포인터  (0) 2023.11.07
c to golang online converter  (0) 2023.11.07
Posted by 구차니
Programming/golang2023. 11. 7. 15:29

텍스트로 보이는 환경설정 파일로는 ini만한게 없지..

 

[링크 : https://pkg.go.dev/gopkg.in/ini.v1]

[링크 : https://github.com/go-ini/ini/]

[링크 : https://minwook-shin.github.io/read-and-write-ini-files-ini/]

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

golang 타입 캐스팅 제약(?)  (0) 2023.11.09
golang 배열과 슬라이스  (0) 2023.11.08
golang 함수인자에 배열 포인터  (0) 2023.11.07
c to golang online converter  (0) 2023.11.07
golang slice  (0) 2023.11.07
Posted by 구차니
Programming/golang2023. 11. 7. 14:38

c 들어내고 go로만 짜려니 어렵네..

함수 인자로 포인터를 넘겨줄 때에도 변수의 크기 정보가 넘어가야 한다.

그래서 정확한 포인터의 길이가 함수 인자에 지정되어야 한다.

그럼.. 굳이 포인터 쓸 필요가 없어지는거 아닌가?

 

// Golang program to pass a pointer to an 
// array as an argument to the function 
package main 
  
import "fmt"
  
// taking a function 
func updatearray(funarr *[5]int) { 
  
    // updating the array value 
    // at specified index 
    (*funarr)[4] = 750 
      
    // you can also write  
    // the above line of code 
    // funarr[4] = 750 

  
// Main Function 
func main() { 
  
    // Taking an pointer to an array 
    arr := [5]int{78, 89, 45, 56, 14} 
  
    // passing pointer to an array 
    // to function updatearray 
    updatearray(&arr
  
    // array after updating 
    fmt.Println(arr) 

[링크 : https://www.geeksforgeeks.org/golang-pointer-to-an-array-as-function-argument/]

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

golang 배열과 슬라이스  (0) 2023.11.08
golang ini 지원  (0) 2023.11.07
c to golang online converter  (0) 2023.11.07
golang slice  (0) 2023.11.07
golang echo bind  (0) 2023.11.06
Posted by 구차니