쿠...sal

[컴][웹] front end interview 인터뷰 질문

면접 질문 / 웹 개발 면접 질문 / 프론트 엔드 개발자 질문

Web Front-end interview Questions


Web front-end developer 에게 할 수 있는 인터뷰 질문들이라고 reddit 에 올라왔다. 내용자체들은 흔히 우리가 web 개발에서 알아두면 좋을 내용이라고 생각한다. 한 번 읽어보자.

[컴][파이썬] python 에서 AES 사용법


파이썬 AES 사용법 / AES 예제



python 에서 AES 사용법

PyCrypto

PyCrypto module 을 사용한다.
pip install pycrypto

windows pycrypto binary 는 아래 링크에서 가져오면 된다.


example

>>> from Crypto.Cipher import AES
>>> from Crypto.Util import Counter
>>>
>>> key = b''*16
>>> pt = b''*1000000
>>> ctr = Counter.new(128)
>>> cipher = AES.new(key, AES.MODE_CTR, counter=ctr)
>>> ct = cipher.encrypt(pt)

출처 : https://www.dlitz.net/software/pycrypto/api/current/Crypto.Util.Counter-module.html





See Also

  1. 암호화의 두가지 방식 - 대칭키 방식, 공개키 방식

[컴] 계정관리 시스템을 설계시 알아두면 좋은 내용

account/ user account system / auth system  / password / 계정관련 설계 / 계정 시스템 구성할 때 / 계정시스템 만들때

계정 관리 시스템 설계시 알아두면 좋은 내용

구글 클라우드에서 best practice 라면서 12가지 내용을 알려줬다. 여기서는 제목만 정리한다. 자세한 내용은 ref. 1 을 참고하자.

  • 1. Hash those passwords
  • 2. Allow for third-party identity providers if possible
  • 3. Separate the concept of user identity and user account
  • 4. Allow multiple identities to link to a single user account
  • 5. Don't block long or complex passwords
  • 6. Don't impose unreasonable rules for usernames
  • 7. Allow users to change their username
  • 8. Let your users delete their accounts
  • 9. Make a conscious decision on session length
  • 10. Use 2-Step Verification
  • 11. Make user IDs case insensitive
  • 12. Build a secure auth system



References


  1. Google Cloud Platform Blog: 12 best practices for user account, authorization and password management

[컴][웹] 개인정보보호 자율점검 가이드라인

웹 보안 / 사이트 보안 / 정보보안 / 시큐러티 / security / 해킹방지 / 해커

개인정보보호 자율점검 가이드라인

그저 참고 자료로 올려놓는다.





[컴][웹] Firefox extension 만들기

불여우 확장 / 애드온 / firefox extension

Firefox extension

파이어폭스 add-on 을 만들어 보자.

아래 tutorial 을 참고하자.
일단 extension 을 위해 폴더를 하나 만들자. 여기서는 ‘easypost’ 라는 이름을 사용한다. 그리고 이제 manifest.json 을 하나 만들자.



보통 아래와 같은 모습을 한다. 아래 manifest.json 에 명시되어 잇는 icons/border-48.pngeasypost.js 는 일단 아무거나 만들어 넣으면 된다. 그럼 아래와 같은 구조가 된다.

borderify/
    icons/
        border-48.png
    borderify.js
    manifest.json
여기서 중요한 것은 content_scripts 부분이다. content_scripts 부분에서는 matches 에 해당하는 url 에 가게 되면 content 부분에 script 를 적용해 준다.

matches 에 해당하는 url 에 visit 하면 ‘js’ 에 해당하는 javascript 가 inject 된다. 아래의 경우 moziila.org 로 가면 easypost.js 가 inject 되는 것이다.
{
  "description": "My description",
  "manifest_version": 2,
  "name": "EasyPost",
  "version": "0.9",
  "homepage_url": "https://myeasypost.com",
  "icons": {
    "48": "icons/border-48.png"
  },

  "content_scripts": [
    {
      "matches": ["*://*.mozilla.org/*"],
      "js": ["easypost.js"]
    }
  ]

}

실행

주소창에 about:debugging 를 치고 들어가면 우측상단에 “Load Temporary Add-on” 를 확인할 수 있다.

“Load Temporary Add-on” 를 누르고, easypost.js 를 선택해주면 extension 이 load 된다.

Debug

주소창에 about:debugging 에서 "Enable add-on debugging" 을 check 해주고, Debug 를 누르자. 그러면 Development 창이 뜬다. 이제 아무 tab 에서 원하는 page 로 들어가서 test 를 하면 된다.


Button 을 누르면 동작하기

아래 소스를 보면 알 수 있다.

manifest.json 이 아래처럼 되어 있다. page_action 은 URL bar(주소창) 에 button(또는 popup) 을 만들어 준다. 그래서 이 button 을 누른경우 background 의 js 가 실행되게 된다.


{

...
  "background": {
    "scripts": ["background.js"]
  },

  "page_action": {
    "default_icon": "icons/off.svg",
    "browser_style": true
  },
  
  "permissions": [
    "activeTab",
    "tabs"
  ]

}


page 내의 DOM 에서 js 실행하기

manifest.json 에서 바로 content_scripts 를 이용해서 page 를 조작할 수 있지만, 그외에는 browser.tabs.executeScript 를 이용하게 된다.

var code = 'var idInput = document.querySelector("input#identifierId");'
            + `idInput.value = '${id}';`;
var executing = browser.tabs.executeScript({
    code: code
});
executing.then((result: any) => {console.log(result)},
            (error: any)=>{console.log(error)});

아래처럼 file 의 js 를 불러와서 사용할 수 있다.
var executing = browser.tabs.executeScript({
  file: "/content-script.js",
  allFrames: true
});

See Also

  1. https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Examples
  2. 예제소스들 https://github.com/mdn/webextensions-examples


[컴] CentOS 에서 RabbitMQ 설치







CentOS 에서 RabbitMQ 설치


순서

  1. zero-dependency Erlang from RabbitMQ 을 설치함 : https://github.com/rabbitmq/erlang-rpm
  2. rabbitmq-server-3.6.11-1.el7.noarch.rpm 을 설치

zero-dependency Erlang from RabbitMQ 설치

https://github.com/rabbitmq/erlang-rpm 에서 zero-dependency Erlang from RabbitMQ 부분을 살펴보면 된다. 결론적으로 erlang-19.3.6.2-1.el7.centos.x86_64.rpm 을 설치하면 된다.
$> sudo rpm -ivh erlang-19.3.6.2-1.el7.centos.x86_64.rpm
그러면
  • /usr/lib64/erlang/ 
에 설치된다.


RabbitMQ 설치

$> sudo rpm -ivh rabbitmq-server-3.6.11-1.el7.noarch.rpm

설치하면 아래 경로에 설치된다.

  • /usr/lib/ocf/resource.d/rabbitmq
  • /usr/lib/rabbitmq


RabbitMQ 실행

os 가 booting 될때마다 실행하게 할려면 아래처럼 하면 된다.
  • 아래 2중 하나의 command 를 사용하면 된다.
    • systemctl enable rabbitmq-server.service
    • chkconfig rabbitmq-server on

그것이 아니라면 아래 처럼 해준다. root 로 실행해야 한다. 그러면 알아서 rabbitmq 계정으로 실행한다.
  • 아래 2중 하나의 command 를 사용하면 된다.
    • $ sudo /bin/systemctl start rabbitmq-server.service
    • $ sudo /sbin/service rabbitmq-server stop/start/etc


아래처럼 process 가 보인다.
smmsp      691  0.0  0.0  84120  2040 ?        Ss   00:14   0:00 sendmail: Queue [email protected]:00:00 for /var/spool/clientmqueue

rabbitmq  4944  0.0  0.0  11580   340 ?        SN   03:33   0:00 /usr/lib64/erlang/erts-8.3.5.2/bin/epmd -daemon

rabbitmq 10418  2.9  0.4 6055648 72704 ?       Ssl  10:17   0:01 /usr/lib64/erlang/erts-8.3.5.2/bin/beam.smp -W w -A 128 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -- -root /usr/lib64/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.11/ebin -noshell -noinput -s rabbit boot -sname [email protected] -boot start_sasl -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit error_logger {file,"/var/log/rabbitmq/[email protected]"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/[email protected]"} -rabbit enabled_plugins_file "/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/lib/rabbitmq/plugins:/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.11/plugins" -rabbit plugins_expand_dir "/var/lib/rabbitmq/mnesia/[email protected]" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/var/lib/rabbitmq/mnesia/[email protected]" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672

rabbitmq 10777  0.0  0.0   4308   536 ?        Ss   10:17   0:00 erl_child_setup 1024

rabbitmq 10793  0.0  0.0  11544   444 ?        Ss   10:17   0:00 inet_gethost 4

rabbitmq 10794  0.0  0.0  17892   808 ?        S    10:17   0:00 inet_gethost 4

root     10948  0.0  0.0 112664   968 pts/0    S+   10:18   0:00 grep --color=auto mq

config

rabbitmq 의 config 를 하고 싶으면 아래를 참고하자.


[컴][웹] Django Ecommerce package

Django 게시판 / Django 쇼핑몰 / 이커머스 장고/ 장고로 쇼핑몰 만들기


Django Ecommerce package

ref. 2 의 비교를 보면 가장 괜찮은 쇼핑몰 패키지(ecommerce package) 는 django-oscar 이다. License 도 BSD 3 (?) 이다.


한 번 살펴볼 필요가 있다.



References


  1. Django Packages : Forums : 장고 forum package 비교
  2. Django Packages : E-Commerce : 장고 ecommerce package 비교