Fix slow printing dialog with CUPS network printers

A week ago I decided to make use of the HP deskjet 1010 that I received for free when I bought my microserver.

It is pretty basic one but supports color and prints fairly fast. But the only problem I had with it is that the USB cable is too short so that I have to take my laptop near the printer every time I wanted to print something.
So I decided to connect the printer to my old server box and set up CUPS for printing over the network.

Everything went through fine but after I installed the printer opening the printer dialog box took an eternity every time I tried using it.

The problem seems to lie in the IPP handler of Windows. Somehow there is a bug in Windows that makes IPP settings and Windows internet security settings get mixed up resulting delays.

Adding the CUPS server to Internet Explorer’s Intranet zone can be a workaround.

Open Internet Explorer -> Tools -> Internet options and add the following:

2016-03-31 17_47_23-Blank Page

where the address is the CUPS server’s IP address. You may skip this step if the printer is in your LAN but I decided to do it anyway.

Then go to LAN settings and uncheck “Automatically detect settings”

2016-03-31 18_05_27-Blank Page

It will fix most of the problems.

RAR header

rar

From Forensics Wiki:

Field Name Size (bytes) Description
HEAD_CRC 2 CRC of fields from HEAD_TYPE to FILEATTR and file name
HEAD_TYPE 1 Header Type: 0x74
HEAD_FLAGS 2 Bit Flags (Please see ‘Bit Flags for File in Archive’ table for all possibilities)
HEAD_SIZE 2 File header full size including file name and comments
PACK_SIZE 4 Compressed file size
UNP_SIZE 4 Uncompressed file size
HOST_OS 1 Operating system used for archiving (See the ‘Operating System Indicators’ table for the flags used)
FILE_CRC 4 File CRC
FTIME 4 Date and time in standard MS DOS format
UNP_VER 1 RAR version needed to extract file (Version number is encoded as 10 * Major version + minor version.)
METHOD 1 Packing method (Please see ‘Packing Method’ table for all possibilities
NAME_SIZE 2 File name size
ATTR 4 File attributes
HIGH_PACK_SIZE 4 High 4 bytes of 64-bit value of compressed file size. Optional value, presents only if bit 0x100 in HEAD_FLAGS is set.
HIGH_UNP_SIZE 4 High 4 bytes of 64-bit value of uncompressed file size. Optional value, presents only if bit 0x100 in HEAD_FLAGS is set.
FILE_NAME NAME_SIZE bytes File name – string of NAME_SIZE bytes size
SALT 8 present if (HEAD_FLAGS & 0x400) != 0
EXT_TIME variable size present if (HEAD_FLAGS & 0x1000) != 0

 

But the actual implementation of HEAD_CRC is the lower bits of CRC32 of header defined as in HEAD_SIZE without HEAD_CRC part calculated with standard polynomial of 0xEDB88320. I write it up here because RAR spec documents are crap. I hope this saves a couple of hours for someone.

트켓몬 3DS 개발기

트켓몬 블랙이 끝난지도 많이 지났고

다음세대의 트켓몬을 만들어보고 싶었습니다.

하지만 6세대 3DS는 에뮬이 없고

사실 에뮬이 있긴있지만 초기단계이므로 사실상 게임플레이는 불가능한수준

대책을 만들어야 했습니다.

그래서 3DS에 캡쳐보드를 장착하고 컴퓨터로 화면 출력을 돌린 다음

컴퓨터에서 내리는 명령을 직접 3DS로 전달해주는 장치를 직접 개발에 착수했습니다.

colbaltblue

일단 닌텐도 3ds를 하나 새로 구입

다행히 캡쳐보드가 장착된 제품을 구할 수 있었습니다. 귀찮게 캡쳐보드부터 달지않아서 다행.

IMG_5973

바로 뚜껑따기에 돌입합니다.

IMG_5974

충전을 화면출력과 동시에 할수 있도록 커넥터 개조가 되어 있습니다.

이제부터 본격적인 작업에 들어갑니다.

IMG_5977

우선 가장자리부터 시작해서 방향패드를 들어냅니다

IMG_5979

기타 방해가 되는 모듈과 선들도 분리

IMG_5981

그리고 캡쳐보드를 필름이 끊어지지 않게 조심스레 들어올린뒤 SD카드 슬롯을 빼내고 안에 숨어있는 나사를 제거합니다.

IMG_5982

아랫면 확보 성공

중앙에 노란 필름은 캡쳐보드로 화면과 소리를 출력해주는 기판입니다.

IMG_5984

극세선을 조심스레 버튼핀에 납땜해줍니다.

n1CKAdbPrHyNPNuW.huge

닌텐도 3DS 버튼 구조는 단순합니다.
각 핀이 그라운드로 연결되면 인식이 되는 구조라

버튼키에서 이어져 나오는 포트에 납땜을 하여 도선을 연장시킵니다.

하지만 그중에 방향키 오른쪽에 해당하는 TP90은 캡쳐보드 필름때문에 바로 납땜이 불가능하여 불가피하게 버튼 자체의 코팅을 찢고 그위 구리부분에 납땜을 하였습니다.

IMG_5985

버튼이야 그냥 무난하군요

IMG_5986

대충 다시 덮어서 케이블을 뺄만한 공간을 찾았습니다.
오른쪽부분은 그냥 삼각줄로 케이스를 깎아냈습니다.

그리고 보통 게임카드 접속을 위해 카드 슬롯 끝부분은 그라운드이므로 그라운드핀은 게임슬롯에 납땜을 하여 이용했습니다.

2016-01-23 15_25_50-Gamecards - 3dbrew

혹시나 해서 확인

IMG_5987

버튼핀과 그라운드핀을 연결했을때 정상적으로 버튼입력이 인식되는것을 확인 하였습니다.

IMG_5991

극세사는 브레드보드 연결에 부적합하므로 끝부분은 다시 강도가 있는 단선을 연결후 절연처리를 하였습니다.

IMG_5992

마이크로 컨트롤러에 연결후 프로그래밍 하였습니다.

원래 집에 많이 있는 ATMega328칩셋으로 쓸려 하였으나 후에 터치스크린 구현에서 필요한 DAC 성능 때문에 틴지보드를 사용하였습니다.

IMG_5993

그리고 감압식 터치패드 입력을 분리합니다.

그런데 터치패드로 연결되는 선이 0.5mm FPC라 납땜으로 연결하기는 불가능한 크기이고 다른 대안을 찾아야 했습니다.

그와중에 집에있는 구형 PSP가 FFC케이블을 사용하던게 생각나서 바로 적출했습니다.

IMG_5995

가장자리에 4선을 제외하고 오려서 사용을 시도해보았는데

결과는 패망

대충 커넥터에 접속은 되나 극세사랑 연결시 납땜을 하면 케이블이 바로 녹아버립니다.
FFC의 한계를 체험

이런걸 주문제작으로 살려 하면 주문제작으로 최소 몇천개는 세트로 구해야하기때문에 너무 비효율적이고 시간도 오래 걸립니다.

그러던와중에 서랍에 넣어둔 옛날 NDS를 발견

바로 분해에 들어갔습니다.

IMG_5996

액정을 들어내니 같은 종류의 커넥터를 사용하고 있었습니다.

IMG_5998

조심스레 액정 커버와 터치패널, 액정을 분리합니다.

IMG_5999

터치패널에서 커넥터부분을 떼어내고

IMG_6001

알코올로 접착제를 긁어낸뒤 극세사 납땜을 해줍니다.

IMG_6002

접촉이 잘 되었는지 확인을 위해 시험삼아 한번 꽂아 보았습니다.

IMG_6006

나머지 부분도 납땜후 대충 전류를 흘려주니 어떻게 입력이 되긴합니다.

2016-01-23 16_08_49-HOW DOES IT WORK - HOW DOES IT WORK.pdf

데이터시트를 통해 알아보니 NDS/3DS는 이 방식을 사용하는 듯 합니다. VCC는 1.8V이였습니다.

볼트미터로 전압을 측정해보니 3DS는 대충 Y+ X+ X- Y- 의 순서로 핀이 배열된듯 합니다.

2016-01-23 16_04_34-4-Wire and 8-Wire Resistive Touch-Screen Controller Using the MSP430 (Rev. A) -

자 이제 대충 컨셉은 알겠습니다.

3DS의 VCC는 1.8V인데 틴지보드는 3.3V입니다. 버퍼를 사용할 수도 있지만 터치스크린을 아예 안 쓸 예정이므로 그냥 볼트미터로 아날로그 1.8V 출력이 가능한 값을 찾아서 그 값에 비례하여 줄이는 방법을 사용 하였습니다.

3DS의 경우 Y+가 GND로 연결되어 터치 인터럽트가 발생되면 바로 0.0005초 후에 X+ 전압을 읽어내고 Y+ 이 입력모드로 전환후 0.0002초동안 Y+ 전압을 측정하는 방식으로 작동합니다.

이젠 엄청나게 정밀한 타이밍이 요구됩니다.

우선 X+ 핀은 시간적 여유가 있으므로 PWM 으로 연결하고 Y+는 ADC에서 출력하는 방식으로 코드를 짰습니다.

mwlpq

오실로스코프에선 대충 이렇습니다.

그리고 좀 귀찮은 노가다끝에 정확한 타이밍을 맞추는 코드를 작성할 수 있었습니다

심지어 머신코드 최적화 컴파일러가 타이밍을 틀어버리는바람에 매우 귀찮은 반복의 연속이였습니다.

IMG_6008

드디어 완벽한 정사각형을 그려내는 컨트롤러의 모습입니다.

IMG_6015

나머지 선들을 전부 연결후 마무리 하였습니다.

극세선들이 매우 복잡하긴 하지만 귀찮으므로 정리는 하지 않습니다.

이제 컴퓨터로 화면 출력과 동시에 게임을 할수 있는 장비가 완성되었습니다.

어제 새벽에 전체적인 시험을 거친 후 채팅 처리 프로그램을 업데이트 하였습니다.

국내판 콘솔에 국내판 소프트웨어로

인터넷 접속도 가능하도록 하였습니다.

3DS 콘솔이 있으신분은 본인 포켓몬과 교환도 가능.

모험의 시작은 오늘 6시 정각입니다

http://twitch.tv/manatails

이란 물가

그냥 요즘 물가이야기 많이 올라오길래 올해 초의 기억을 되살리며 적어봅니다

환율은 표준환율로 계산한건데 실제로 현지는 외화가 많이 없어서 환전상들이 이란화를 20%정도 더쳐주니 밑에 나오는 가격에서 20%정도 더 싸게 보셔도됨

동네 레스토랑에서 먹은 양고기 스테이크

순수 양갈비만 10조각정도로 우리나라에선 상상하기 어려운 양

빨간 박스가 양고기 스테이크인데
가격 323000리알
대략 11000원정도
캔음료
보통 6000리알 정도
코카콜라같은 탄산음료도 같은가격
200원
집에서 사먹는 테이크아웃 케밥 (밥밑에 고기있음)
120000리알 – 4000원
휴대폰
LTE 데이터 5GB 요금제 27000토만 9000원정도 됨
음성통화는 너무 싸서 기억도안남 1분에 3원인가
지하철
거리상관없이 500토만
200원 조금 안되는수준
기름은 리터당 300원정도
옛날엔 리터당 10원도 안했다고 하는데 민주혁명 후 경제가 폭망해서 엄청나게 많이 비싸진거라고 함
고속도로 통행료 300원을 내고나면 매드맥스를 방불케하는 미친도로가 펼쳐짐
이길로 장장 500km을 달려야되었었음

시장
시장에서 먹은 닭고기덮밥 비스무레한 음식
13000토만 – 4000원 조금 넘음
난은 무한리필
이란에서도 매너티는 최고 존엄입니다.

포켓몬스터 기라티나 도박장 패치

 

포켓몬스터 기라티나 한국지역 롬에서 제거된 도박장을 활성화시키는 패치입니다.

한글판 포켓몬스터 PT 기라티나 롬에 사용 가능합니다.
프로그램을 실행 후 롬파일을 열고 패치버튼을 누른 뒤 패치된 롬파일을 저장할 경로를 선택해 주시면 됩니다.

올바른 롬파일을 사용했는데도 패치할 수 없는 파일이라고 뜨는 경우엔 롬이 변형된 경우이므로 새로운 순정 롬파일을 구하셔야 합니다.

PT_K_도박장패치.zip

Gitlab login page customization

Login HAML location for Ubuntu 12.04 is as follows

/opt/gitlab/embedded/service/gitlab-rails/app/views/layouts/devise.html.haml

Edit the file as you need. Then run

sudo gitlab-ctl restart
to apply the edited HAML and restart gitlab.

The old way of calling bundle rake or gitlab-ctl rake is useless now. You don’t have to use it nor you should use it.

배틀필드 3/4용 PunkBuster 안전검사

PC방이나 다른 컴퓨터에서 게임을 하시는 분들을 위한 프로그램입니다.

혹시나 컴퓨터에 남이 쓰던 게임핵이 깔려있지 않을까, PC방 프로그램이 해킹툴로 오인되어 밴 되지 않을까 걱정할 필요 없습니다.
배틀필드를 설치하시면서 검사를 하면 PunkBuster에서 문제 소지가 있는 프로그램을 먼저 탐지해 줍니다.
이로 게임도중 예기치 않게 해커로 몰리거나 계정을 잃어버리는 상황을 최대한 방지할 수 있습니다.

가끔씩 PC방에서 플레이한 후 억울한 밴을 당했다는 유저들이 종종 보이고, 펑부 자체도 오진률이 꽤나 되는듯하여 만들어 보았습니다.

사용법 : 실행후 본인이 플레이할 게임을 고르시면 됩니다.
현재 배틀필드 3, 배틀필드 4를 지원하고 하드라인은 필자가 소유하지 않는 관계로 생략했습니다.

본인 컴퓨터의 사양이나 실행 환경에 따라 몇 분 정도 걸릴 수 있습니다. 노트북이거나 실행 프로그램이 많은 경우 10~15분 이상 걸릴수도 있으니 유의하세요.

violation

위험요소 발견시 위와 같은 경고창이 뜹니다.

finish

경고창 없이 성공적으로 검사가 완료되었다면 안심하고 게임을 즐기시면 됩니다.

다운로드 : PCBangCheck-20150723

때때로 PunkBuster 시스템에 큰 변화가 생기면 이에 맞춰서 업데이트를 할 생각입니다.

* PunkBuster 특성상 검사방법이 주기적으로 바뀌며, 해당 프로그램은 실시간으로 업데이트 되지 않기 때문에 검사가 되지 않았지만 걸리는 파일이 생길 수 있음을 알려 드립니다 물론 그렇게 문제가 생길 확률은 희박합니다.

** 실행시 오류가 발생한다면 .NET 프레임워크 4.0을 설치해야 합니다 : https://www.microsoft.com/en-us/download/details.aspx?id=17718

Using a custom security certificate for RDP connections

This post is somewhat late, but I decided to upload it for informative purposes.

In early this year I set up my own CA for securing connections between devices that I use.
One of the things I cared about is the Windows Remote Desktop where I did not like the program spitting out warnings about default, non-secure self-signed certificate.
So I thought about using my own certificates for them.
First I created an importable .pfx file with the private key and the certificate.
With the certificate saved on the target machine, do the following:

cert1

Open the mmc console and add a certificate snap-in for local computer account.

cert2

Go to Personal key storage and import the key file(It is NOT Remote Desktop storage despite its name).

cert3

Open Remote Desktop Session Host Configuration.

cert4

Right click your desired RDP connection (RDP-tcp for my case) and go to properties.

cert5

Press ‘Select’ button in the certificates section to locate your certificate.
Then click Apply and disconnect from the RDP session. Further sessions will be secured using the certificate you specified.

A wild manatee