지하철에 한동안 안가서 방송이 나중에야 나오는데

7호선 수락산역 터널에서 탈선사고 났다고


부랴부랴 인터넷 검색하니 트윗으로 하나 뜬거 발견


아무튼 환승 전역에서 멈춰서 다른거 타고 가라는데

다리 상태가 안좋아서 환승도 못하니 그냥 버팅기고 있었고

5분 정도 대기후에 출발 해서 무사히 도착

Posted by 구차니

상봉역을 앞두고 못가는 중 ㅠㅠ

Posted by 구차니
Programming/android2019. 3. 14. 16:13

adb에서 설정해주고 android studio 에서 장치 붙이기 누르면 바로 뜬다고..


[링크 : https://itmir.tistory.com/594]

[링크 : https://blog.asamaru.net/2015/09/07/android-run-slash-install-slash-debug-applications-over-wifi/]

[링크 : https://developer.android.com/studio/command-line/adb?hl=ko]

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

android studio /dev/kvm permission denied  (0) 2019.06.11
ubuntu android studio  (0) 2019.06.10
AndroidManifest.xml (binary) 디코더  (0) 2019.03.14
android REST client  (0) 2019.02.07
안드로이드 주기적 작업  (0) 2019.01.25
Posted by 구차니
Programming/android2019. 3. 14. 16:02

apk 안에들어있는 녀석은 이진화 되어있어서 볼 수 없는데(그럼 xml이라고 하지말던가!)

axmldec 받아서 apk 를 지정해주면 xml로 뱉어내준다. (xml 파일을 압축 풀어서 하는게 아님)


[링크 : https://github.com/ytsutano/axmldec]

  [링크 : https://android.stackexchange.com/questions/197182/apks-androidmanifest-xml-looks-to-be-binary]

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

ubuntu android studio  (0) 2019.06.10
안드로이드 무선 디버깅(adb wifi)  (0) 2019.03.14
android REST client  (0) 2019.02.07
안드로이드 주기적 작업  (0) 2019.01.25
액티비티 인텐트  (0) 2019.01.25
Posted by 구차니

서버를 보다보니 뭔가가 주기적으로 IO를 일으키는게 보여서

프로세스 확인해보니 특정 VM

특정 VM에다가 iotop 깔아서 보니 아래 녀석이 튀어나온다.

% postgres: wal writer process

% postgres: checkpointer process

% postgres: autovacuum worker process   dbname


그래서 WAL이 먼가 찾아보니 Write Ahead Logging의 약자라고..

WAL을 쓰면 하드에 쓰는 주기가 줄어든다고 하는데..

[링크 : http://postgresql.kr/docs/9.6/wal-intro.html]


[링크 : https://www.postgresql.org/docs/9.6/wal-intro.html]


체크포인트는 더티를 쓰는 거고(write back에 가깝나?)

 At checkpoint time, all dirty data pages are flushed to disk and a special checkpoint record is written to the log file.

[링크 : https://www.postgresql.org/docs/9.2/wal-configuration.html]

[링크 : https://www.postgresql.org/docs/8.2/wal-configuration.html]


얘는 garbage collector 인거 같네

 VACUUM -- garbage-collect and optionally analyze a database

[링크 : https://www.postgresql.org/docs/8.2/sql-vacuum.html]


[링크 : https://www.postgresql.org/docs/8.2/runtime-config-autovacuum.html]

[링크 : https://www.postgresql.org/docs/8.2/routine-vacuuming.html]



읽으려니 눈에 안들어 오네.. ㅠㅠ

[링크 : https://www.cybertec-postgresql.com/en/postgresql-writer-and-wal-writer-processes-explained/]

'프로그램 사용 > postgreSQL' 카테고리의 다른 글

postgresql password chg  (0) 2019.06.04
postgresql 계정은 있는데 로그인 안될때  (0) 2019.03.20
postgresql encoding / collate  (0) 2019.03.08
postgresql 설치(centos)  (0) 2019.03.08
postgreSQL centos 패키지  (0) 2019.02.01
Posted by 구차니

패킹 혹은 난독화라고 해야 하려나?

패킹은 단순하게 base62로 인코딩 한 것을 eval을 통해서 실행하는 구조인 거라

난독화라 하긴 애매한 녀석이고


짧은 녀석을 패킹하니 오히려 더 데이터가 많아지는 현상이 발생!

var aasdfasdf = 'asdfasfasdf';

console.log("aasdfasdf :"+aasdfasdf); 


대충봐도 어떤 구조인지 그냥 눈에 보이는 느낌적인 느낌?

eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('1 0=\'2\';3.4("0 :"+0);',5,5,'aasdfasdf|var|asdfasfasdf|console|log'.split('|'),0,{})) 


[링크 : https://fimtrus.tistory.com/entry/자바스크립트-난독화패킹-언패킹]

  [링크 : http://dean.edwards.name/packer/]

  [링크 : https://www.strictly-software.com/unpacker#unpacker]

[링크 : https://xetown.com/questions/494426]

[링크 : https://12bme.tistory.com/357]


한 10만원 하는 프로그램이 쩐다고(압축율에서)

[링크 : https://allroundplaying.tistory.com/59]


[링크 : https://obfuscator.io/] 얜 무료


원리관련

[링크 : https://4rgos.tistory.com/2]

Posted by 구차니

흐음...

여러개 패킷을 까본건 아니지만 캐시에서 다른걸로 인식하는 이유가 저 망할 cpn 값 때문인 듯..

https://r2---sn-ab02a0nfpgxapox-jwwe7.googlevideo.com/videoplayback?source=youtube&ms=au%2Conr&mt=1552538122&

mv=m&id=o-ALgIWMfOrFHHMwZnmn-TneMiQB_DBuam4C3gy0uXrNt3&requiressl=yes&dur=478.244&mm=31%2C26&

mn=sn-ab02a0nfpgxapox-jwwe7%2Csn-oguelne7&pl=22&ip=211.237.16.76&

sparams=aitags%2Cclen%2Cdur%2Cei%2Cgcr%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Crequiressl%2Csource%2Cexpire&signature

=E9FA7DEB837FF2931C1BBDF8A75CC08AA6381D.553ACDD01BBD44D14946BB8D37C5B285DD807580&gcr=kr

&ipbits=0&expire=1552559810&lmt=1548316020126515&initcwndbps=728750&

aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C394%2C395%2C396%2C397&

mime=video%2Fmp4&itag=396&key=yt6&gir=yes&clen=16011686&keepalive=yes&txp=5532432&fvip=2&

ei=YtqJXMbHJKeGs8IPgp6B4AQ&

c=WEB&alr=yes&

cpn=zCV8-pls_I8uiHHw&

cver=2.20190313&

range=0-90603&

altitags=395%2C394&rn=1&rbuf=0

https://r2---sn-ab02a0nfpgxapox-jwwe7.googlevideo.com/videoplayback?source=youtube&ms=au%2Conr&mt=1552538122&

mv=m&id=o-ALgIWMfOrFHHMwZnmn-TneMiQB_DBuam4C3gy0uXrNt3&requiressl=yes&dur=478.244&mm=31%2C26&

mn=sn-ab02a0nfpgxapox-jwwe7%2Csn-oguelne7&pl=22&ip=211.237.16.76&

sparams=aitags%2Cclen%2Cdur%2Cei%2Cgcr%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Crequiressl%2Csource%2Cexpire&signature

=E9FA7DEB837FF2931C1BBDF8A75CC08AA6381D.553ACDD01BBD44D14946BB8D37C5B285DD807580&gcr=kr

&ipbits=0&expire=1552559810&lmt=1548316020126515&initcwndbps=728750&

aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C394%2C395%2C396%2C397&

mime=video%2Fmp4&itag=396&key=yt6&gir=yes&clen=16011686&keepalive=yes&txp=5532432&fvip=2&

ei=YtqJXMbHJKeGs8IPgp6B4AQ&

c=WEB&alr=yes&

cpn=naxiChjHuGyejORl&

cver=2.20190313&

range=0-90603&

altitags=395%2C394&rn=1&rbuf=0


[링크 : https://www.youtube.com/watch?v=lBSC3rUWGtY]


+

크롬에서 개발자도구로 검색해보니 base.js 에서 cpn을 생성하는 부분을 발견..

Client Playback Nonce 줄여서 cpn

g.h.Wj = function(a) {

        lja(this, a);

        if ("html5.invalidstate" != a.errorCode && "fmt.unplayable" != a.errorCode && "fmt.unparseable" != a.errorCode || !WI(this, a.errorCode, a.details)) {

            var b = /^pp/.test(this.g.clientPlaybackNonce);

            if (kja(a)) {

                a.details.sts = "17968";

                if (YI(this)) {

                    g.U(this.l, 4) || !this.fa("html5_suspended_reload_killswitch") && g.U(this.l, 512) ? (this.Mc = !0, cI(this)) : (this.o && (a.g && (a.details.e = a.errorCode, a.errorCode = "qoe.restart", a.g = !1), this.o.onError(a.errorCode, Tw(a.details))), ZI(this));

                    return

                }

                a: if (!(6048E5 >

                        g.P() - this.A.vh)) {

                    try {

                        window.location.reload(!0);

                        break a

                    } catch (c) {}

                    this.fa("tvhtml5_retire_old_players") && g.Iy(this.A) && aJ(this)

                }

            }

            if ($I(a) && this.g.va && this.g.va.i) {

                if (this.o) this.o.onError(a.errorCode, Tw(a.details));

                this.Ya("highrepfallback", "1", !0);

                !this.fa("html5_hr_logging") && /^hr/.test(this.g.clientPlaybackNonce) && btoa && this.Ya("afmts", btoa(this.g.adaptiveFormats));

                zha(this.g);

                aI(this);

                cI(this);

                VI(this);

                this.playVideo()

            } else a.g ? (b = this.u ? this.u.B.o : null, b = $I(a) && b && b.isLocked() ? "FORMAT_UNAVALIABLE" :

                void 0, g.lI(this, a.errorCode, b, Tw(a.details))) : this.o && (this.o.onError(a.errorCode, Tw(a.details)), b && "manifest.net.connect" == a.errorCode && (a = "https://www.youtube.com/generate_204?cpn=" + this.g.clientPlaybackNonce + "&t=" + g.P(), (new IF(a, "manifest", (0, g.y)(function(c) {

                this.Ya("pathprobe", c)

            }, this), (0, g.y)(function(c) {

                this.onError(c.errorCode, Tw(c.details))

            }, this.o))).send()))

        }

    }; 


Posted by 구차니
프로그램 사용/squid2019. 3. 14. 13:01

두개가 연관이 있는 것 같으면서도 다른거 같은데


계층을 두어 관리하는 이유는 (캐시 계층)

squid 하나가 전체를 캐싱하는게 아니라 부모나 친척 노드에서 분산해서 캐시를 저장하기 위함으로 보인다.

[링크 : https://wiki.squid-cache.org/Features/CacheHierarchy]


그리고 그 계층과는 다르게 데이터를 분석함으로서

어떤 계층으로 나누어서 캐싱을 할지에 대한게 HTTP 프로토콜 레벨에서의 계층으로 나누고

그 계층에서 열외되는 애들은 캐싱을 하지 않도록 한다는 내용

What makes a request hierarchic

The purpose of cache hierarchy is to maximize the chance of finding objects in siblings, so a set of heuristics is applied to try and determine in advance whether an object is likely to be cacheable. A few objects are not cacheable, and are thus not hierarchic. Those are:

  • reload requests
  • cache validations with non-Squid ICP peers
  • requests for HTTP methods other than GETHEAD or TRACE

  • authenticated requests 


[링크 : https://wiki.squid-cache.org/KnowledgeBase/HierarchyControl]


'프로그램 사용 > squid' 카테고리의 다른 글

lynx proxy  (0) 2019.03.27
url_rewriter squid  (0) 2019.03.15
squid url_rewrite_program  (0) 2019.03.14
squid log code  (0) 2019.03.01
squid hier/none direct 관련 설정  (0) 2019.02.27
Posted by 구차니
프로그램 사용/squid2019. 3. 14. 11:19

예전에 찾던 것 중에 php를 통해 무언가를 쓰는게 있었는데

얘 명칭이 helper multiplexer인 듯.

근데 어떤 포맷으로 데이터를 넘겨서 실행하게 하는지에 대해서는 안보이네?


2.4 Helper Multiplexer

The helper multiplexer's purpose is to relieve some of the burden Squid has when dealing with slow helpers. It does so by acting as a middleman between squid and the actual helpers, talking to Squid via the multiplexed concurrent variant of the helper protocol and to the helpers via the non-concurrent variant.

Helpers are started on demand, and in theory the muxer can handle up to 1k helpers per instance. It's up to squid to decide how many helpers to start.

The muxer knows nothing about the actual messages being passed around, and as such can't really (yet?) compensate for broken helpers. It is not yet able to manage dying helpers, but it will.

To configure the multiplexer add its binary name (usually /usr/share/libexec/helper-mux.pl) in front of the name of whichever helper is being multiplexed. It takes the helper binary path and parameters as its own command parameters. The concurrency setting already existing in Squid is used to configure how many child helpers it may run.

For example, a traditional configuration is

        url_rewrite_program /your/redirector.sh
        url_rewrite_children 5
   
the alternative multiplexer configuration is:
        url_rewrite_program /usr/share/libexec/helper-mux.pl /your/redirector.sh
        url_rewrite_children 1 concurrency=5
   

Helpers which are already concurrent protocol enabled gain little benefit from the multiplexer on most systems. However on some systems where Squid spawning helpers causes excess memory usage the reduction in direct helper spawned by Squid can result in a great reduction in resource use.

The helper can be controlled using various signals:

  • SIGHUP: dump the state of all helpers to STDERR

[링크 : ftp://ftp.arnes.si/packages/squid/squid-3.2.14-RELEASENOTES.html]


 # OPTIONS FOR URL REWRITING

# ----------------------------------------------------------------------------- # TAG: storeurl_rewrite_program # Specify the location of the executable for the Store URL rewriter. # The Store URL rewriter allows URLs to be "normalised" ; mapping # multiple URLs to a single URL representation for cache operations. # # For example, if you request an object at: # # http://srv1.example.com/image.gif # # and a subsequent request for: # # http://srv2.example.com/image.gif # # then Squid will treat these both as different URLs and cache them # seperately. # # This is almost the normal case, but an increasing number of sites # distribute the same content between multiple frontend hosts. # The Store URL rewriter allows you to rewrite these URLs to one URL # to use for cache operations, but not -fetches-. Fetches are still # made from the original site, but stored with the store URL rewritten # URL as the store key. # # For each requested URL rewriter will receive on line with the format # # URL <SP> client_ip "/" fqdn <SP> user <SP> method <SP> urlgroup # [<SP> kvpairs] <NL> # # In the future, the rewriter interface will be extended with # key=value pairs ("kvpairs" shown above). Rewriter programs # should be prepared to receive and possibly ignore additional # whitespace-separated tokens on each input line. # # And the rewriter may return a rewritten URL. The other components of # the request line does not need to be returned (ignored if they are). # # By default, a Store URL rewriter is not used. # # Please note - the normal URL rewriter rewrites Squid's _destination_ # URL - ie, what it fetches. The Store URL rewriter rewrites Squid's # _store_ URL - ie, what it uses to store and retrieve objects. # #Default: # none


#  TAG: url_rewrite_program
#	Specify the location of the executable for the URL rewriter.
#	Since they can perform almost any function there isn't one included.
#
#	For each requested URL rewriter will receive on line with the format
#
#	URL <SP> client_ip "/" fqdn <SP> user <SP> method <SP> urlgroup
#	 [<SP> kvpairs] <NL>
#
#	In the future, the rewriter interface will be extended with
#	key=value pairs ("kvpairs" shown above).  Rewriter programs
#	should be prepared to receive and possibly ignore additional
#	whitespace-separated tokens on each input line.
#
#	And the rewriter may return a rewritten URL. The other components of
#	the request line does not need to be returned (ignored if they are).
#
#	The rewriter can also indicate that a client-side redirect should
#	be performed to the new URL. This is done by prefixing the returned
#	URL with "301:" (moved permanently) or 302: (moved temporarily).
#
#	It can also return a "urlgroup" that can subsequently be matched
#	in cache_peer_access and similar ACL driven rules. An urlgroup is
#	returned by prefixing the returned URL with "!urlgroup!".
#
#	By default, a URL rewriter is not used.
#
#Default: 

# none 

[링크 : http://alter.org.ua/soft/win/squid_url_rewrite/squid.conf]


[링크 : https://wiki.squid-cache.org/Features/HelperMultiplexer]

'프로그램 사용 > squid' 카테고리의 다른 글

url_rewriter squid  (0) 2019.03.15
squid hierarchy  (0) 2019.03.14
squid log code  (0) 2019.03.01
squid hier/none direct 관련 설정  (0) 2019.02.27
squid용 인증서 관련 (인증서 변환하기)  (0) 2019.02.25
Posted by 구차니