Languages

Languages/Dart(Flutter)

[Flutter] 화면 가로 너비(width)와 세로 높이(height) 알아내기(MaterialApp, Getx)

Flutter 앱 개발할 때 padding 또는 width, height 등을 고정으로 잡아놓으면 결국 다른 해상도의 디바이스에서 실행할 때 화면이 다 깨져버린다. 프로토타입 만들 때는 고정으로 해도 되지만 실제로 배포하기 전에 각기 다른 해상도에서도 문제가 생기지 않도록 비율로 지정해놓는 것이 정신건강에 이롭다. MaterialApp 내부에서 해당 screen의 높이와 너비는 MediaQuery를 이용해 알아낼 수 있다. double width = MediaQuery.of(context).size.width double height = MediaQuery.of(context).size.height import 'package:flutter/material.dart'; void main() { runAp..

Languages/JavaScript

[React] import할 때 {}(중괄호)의 의미

react-native를 하며 라이브러리에서 특정 메소드 또는 함수를 import 할 때 {}(중괄호) 안에 적어줄 때도 있고 그냥 메소드명만 표기할 때가 있는데, 예를 들어 아래와 같은 경우가 있다. import React, { useState, useEffect } from 'react'; React는 중괄호 없이 적었고, 상태 관리를 위한 Hook인 useState와 컴포넌트 랜더링 시 원하는 작업을 실행시키도록 도와주는 Hook인 useEffect는 중괄호 안에 메소드를 적었다. 이는 'react'라는 패키지 내부에서 어떻게 해당 메소드를 export 하는지에 따라 import시 표기하는 방법이 달라진다. 만약 아래와 같은 contextAPI가 있다고 가정한다. import React, { cre..

Languages/JavaScript

[React Native Error] Too many re-renders. React limits the number of renders to prevent an infinite loop.

개발 중이던 앱은 푸시 알림을 받아 웹뷰를 보여주는 기능을 수행한다. 이때 푸시 알림은 가장 상위단에서 수신하고 url 정보 갱신한 후 하위 Home까지 props로 전달하고, 최종적으로 Home.js에서 useState를 이용해 url 변수를 갱신하여 rerender하는 구조를 계획하였다. 하지만 useState의 남용에 의해 아래 에러가 발생하였다. "Too many re-renders. React limits the number of renders to prevent an infinite loop." 해당 에러가 발생한 구조는 아래와 같다. // App.js import React, { useEffect, useState } from 'react'; import * as Notifications f..

Languages/Python

[Python] pandas의 Dataframe과 list의 삽입 수행 속도 차이

30만 개 정도의 데이터를 Dataframe을 이용해 append 연산을 하는 작업을 수행하다 비정상적으로 느리게 동작하는 것을 발견했다. 아무리 느린 파이썬이라 해도 이 정도로 삽입 연산이 느린 것은 잘 와닿지 않아 실험을 해보았다. 아래와 같이 7가지 테스트를 진행하였다. pandas append pandas concat pandas loc dict in list dict list comprehension list append list comprehension 1, 2, 3 번은 각각 Dataframe 첫 행 생성 후 append, concat, loc를 이용하여 데이터를 삽입한다. 4번은 dictionary를 list에 append하며 생성하고 Dataframe으로 변환시켰고, 5번은 diction..

Languages/JavaScript

[JavaScript] "?"의 기능들

1. 삼항 연산자(Ternary Operator) if-else 문으로 처리할 수 있지만 삼항 연산자를 사용하면 가독성은 떨어질 수 있지만 간결하게 표현이 가능하다. 브런치(Branch)문의 원래 기능처럼 런타임에 변수나 상태 등을 변경할 때 사용할 수 있다. const actions = ["Work", "Eat", "Leave"]; console.log(actions.includes("Eat") ? "Hamburger" : "Coding"); // "Hamburger" 2. 선택적 체인(Optional Chaining) 존재하지 않는 속성(property)을 호출하면 오류를 반환한다. 이때 오류가 아닌 undefined를 반환하도록 하는 선택적 체인(Optional Chaining) 방법이 있다. An..

Languages/Python

[Python] 파이썬 속도에 영향을 주는 GIL(Global Interpreter Lock)과 Garbage Collection

주요 개념병렬처리GIL(Global Interpreter Lock)Garbage Collection(GC)Thread 파이썬은 일반적으로 컴파일 언어보다 속도가 느리다. 이는 GIL(Global Interpreter Lock) 때문인데 이는 파이썬 객체에 대한 다중 접근을 보호하기 위한 Mutex(Mutual Exclusion, 상호 배제)로서 여러 쓰레드가 동시에 병렬적(Parallel)으로 실행하지 못하도록 하는 것이다. 따라서 한 파이썬 프로세스는 파이썬 인터프리터에 의해 한 쓰레드만이 작업 공간을 점유할 수 있다. 즉 파이썬에서 멀티 쓰레딩을 사용하게 되면 시분할 방식으로 프로세스들이 돌아가며 작업을 수행한다. 병렬 처리, 분산 처리를 통해 속도를 향상시키는 여러 기술이 나왔지만 파이썬은 해당 기..

AlienCoder
'Languages' 카테고리의 글 목록 (3 Page)
loading