<?php

    // equivalent to MySQL's OLD_PASSWORD() function
    function shittyPassword($input, $hex = true) {
        $nr    = 1345345333;
        $add   = 7;
        $nr2   = 0x12345671;
        $tmp   = null;
        $inlen = strlen($input);
        for ($i = 0; $i < $inlen; $i++) {
            $byte = substr($input, $i, 1);
            if ($byte == ' ' || $byte == "\t") {
                continue;
            }
            $tmp = ord($byte);
            $nr ^= ((($nr & 63) + $add) * $tmp) + (($nr << 8) & 0xFFFFFFFF);
            $nr2 += (($nr2 << 8) & 0xFFFFFFFF) ^ $nr;
            $add += $tmp;
        }
        $out_a  = $nr & ((1 << 31) - 1);
        $out_b  = $nr2 & ((1 << 31) - 1);
        $output = sprintf("%08x%08x", $out_a, $out_b);
        if ($hex) {
            return $output;
        }

        return hexHashToBin($output);
    }

    function hexHashToBin($hex) {
        $bin = "";
        $len = strlen($hex);
        for ($i = 0; $i < $len; $i += 2) {
            $byte_hex  = substr($hex, $i, 2);
            $byte_dec  = hexdec($byte_hex);
            $byte_char = chr($byte_dec);
            $bin .= $byte_char;
        }

        return $bin;
    }
    
    $hash = shittyPassword('whatislove');
    echo $hash;

'PHP 프로그래밍' 카테고리의 다른 글

https ssl 보안인증 적용후 스마트에디터 DHTML 안되는 문제해결  (0) 2018.05.19
PHPEXCEL 다운로드  (0) 2018.03.05
include 파악  (0) 2018.02.01
CMS  (0) 2018.01.14
PHP 이카운트 연동  (0) 2018.01.14

http://fancybox.net/

 

Fancybox - Fancy jQuery lightbox alternative

What is it? FancyBox is a tool for displaying images, html content and multi-media in a Mac-style "lightbox" that floats overtop of web page. It was built using the jQuery library. Licensed under both MIT and GPL licenses Features Can display images, HTML

fancybox.net

'자바스크립트' 카테고리의 다른 글

jquery UI  (1) 2023.10.18
jquery 슬라이드 추천  (0) 2023.10.18
jquery 툴팁  (0) 2023.10.18
모달 tinggle.js  (0) 2018.01.25
jquery - select option 선택값 가져오기  (0) 2018.01.22

https://api.jqueryui.com/accordion/#entry-examples

 

Accordion Widget | jQuery UI API Documentation

Description: Convert a pair of headers and content panels into an accordion. The markup of your accordion container needs pairs of headers and content panels: 1 2 3 4 5 6 First content panel Second content panel Accordions support arbitrary markup, but eac

api.jqueryui.com

 

Accordion Widget

 

Accordion Widget | jQuery UI API Documentation

Description: Convert a pair of headers and content panels into an accordion. The markup of your accordion container needs pairs of headers and content panels: 1 2 3 4 5 6 First content panel Second content panel Accordions support arbitrary markup, but eac

api.jqueryui.com

Tabs Widget

'자바스크립트' 카테고리의 다른 글

jquery 갤러리  (0) 2023.10.18
jquery 슬라이드 추천  (0) 2023.10.18
jquery 툴팁  (0) 2023.10.18
모달 tinggle.js  (0) 2018.01.25
jquery - select option 선택값 가져오기  (0) 2018.01.22

https://swiperjs.com/

 

 

https://kenwheeler.github.io/slick/

 

slick - the last carousel you'll ever need

slick is a responsive carousel jQuery plugin that supports multiple breakpoints, CSS3 transitions, touch events/swiping & much more!

kenwheeler.github.io

 

'자바스크립트' 카테고리의 다른 글

jquery 갤러리  (0) 2023.10.18
jquery UI  (1) 2023.10.18
jquery 툴팁  (0) 2023.10.18
모달 tinggle.js  (0) 2018.01.25
jquery - select option 선택값 가져오기  (0) 2018.01.22

https://atomiks.github.io/tippyjs/

 

Tippy.js - Tooltip, Popover, Dropdown, and Menu Library

The complete tooltip, popover, dropdown, and menu solution for the web

atomiks.github.io

 

'자바스크립트' 카테고리의 다른 글

jquery UI  (1) 2023.10.18
jquery 슬라이드 추천  (0) 2023.10.18
모달 tinggle.js  (0) 2018.01.25
jquery - select option 선택값 가져오기  (0) 2018.01.22
datepicker 특정요일  (0) 2018.01.14

<%@ codepage="65001" language="VBScript"%> 

<%

Response.charset = "utf-8"

Session.CodePage = 65001

 

ApplicationAPIKey = "AAAAYYCIQsw:APA91bE7IZtPU_GRqwnZrfSPwmOjugh93Dww4eA4reF23FabYdHEXGUE0dTlkQzFzSlSI4l90nDjiT_Kpb4_3h65DQs9hraA1-ANCsvhu5y4i6SJZ55HRIIYFlDvw2QLJFYYkBNVtpug0th_e0uycHGQeDn0_WV1YQ"

PushServerURL     = "https://fcm.googleapis.com/fcm/send"

msg_body          = "홍길동기사님이 지금 출발 합니다. 잠시만 기다려주세요."

msg_title         = "홍길동기사님이 배차되었습니다."

Token             = "cFFnojouGH0:APA91bHSALaPZ0PQ2RdF7bnP_JK2e21fWtAlmYUW3jjULJSvlfG7qUfTtrz7_TPLZj46DbdMdbOqizT7O_VMM_9RddlvaBfUf1kLeR7gcdDoOsh8-R_SLPs_H4qnlkjoeceG4xgaaZFzYaRmaDMEXrajUWP1ZG_mNg"

 

postJSONData = "" & _

  "{" & _

  "  ""to"" :  """ & Token & """ " & _

  ", ""priority"": ""high""" & _

  ", ""notification"": {" & _

  "               ""body"" : """ & msg_body & """" & _

  "               , ""title"" : """ & msg_title & """" & _

  "            }" & _

  "}"

 

Set httpObj = Server.CreateObject("WinHttp.WinHttpRequest.5.1")

httpObj.open "POST" , PushServerURL, False

httpObj.SetRequestHeader "Content-Type", "application/json"

httpObj.SetRequestHeader "Authorization", "key=" & ApplicationAPIKey

httpObj.Send postJSONData

httpObj.WaitForResponse

 

If httpObj.Status = "200" Then

Response.Write("전송성공 : " & httpObj.ResponseText)

Else

Response.Write("전송실패 : " & httpObj.ResponseText)

End If

 

%>

1.INSERT 와 SELECT 구문을 주로 사용하는 경우
2.ROLLBACK 트랜잭션을 사용하지 않는 경우
3.테이블을 대규모로 동시에 읽고 쓰지 않는 경우
4.InnoDB 가 제공하는 특별 기능을 사용하지 않는 경우
5.FULLTEXT 인덱스를 사용하는 경우
6.공간적인 컬럼 타입을 사용하는 경우

이런 경우에 MyISAM이 좋습니다. 굳이 무거운 InnoDB 기능 사용 안하실라면....
MyISAM 강추요~



==========================


  

대부분 MyISAM보다 InnoDB스토리지 엔진을 선호합니다. InnoDB는 ACID 트랜잭션, 강제 참조 무결성 (외래 키), 그리고 행 단위의 락(lock)을 지원하기 때문이죠. 그러나 InnoDB는 메모리와 디스크 저장공간을 더 많이 잡아 먹습니다. 그래서 InnoDB의 특별한 기능을 사용하지 않는다면, MyISAM을 선택하는 것이 좋은 것 같습니다. 

 


=========================================

뭐 어떤 것이 더 우수하다는 것은 없고요. 
어떤 서비스를 하시느냐에 따라서 어떤 엔진을 쓰는 것이 좋은지는 있습니다. 
MyISAM과 InnoDB는 가장 대표적이라고 할 수 있는 MySQL의 대표 스토리지 엔진 타입이구요 
일단은 아래 그 두 엔진에 대해서 대략적인 설명을 적어 봤습니다. 
도움이 되셨으면 하네요. 
그럼.. 

MyISAM : 비-트랜젝션-세이프(non-transactional-safe) 테이블을 관리한다. 이 엔진은 전체 문장 검색 능력 뿐만 아니라, 고-성능 스토리지 밀 복구 기능을 제공한다. MyISAM은 모든 MySQL 구성에서 지원되며, 여러분이 MySQL을 다른 타입의 엔진으로 디폴트 구성하지 않는 한 이 엔진이 디폴트 스토리지 엔진으로 구성 

 1) 예전의 MySQL 의 Storage Engines 으로 MyISAM 을 사용했었습니다. 
    예를 들자면 블로그라던지, 게시판 처럼 한사람이 글을 쓰면 다른 많은 사람들이 글을 읽는 방식에 
    최적의 성능을 발휘를 하지요. 지금도 많이 사용하고 있는 방식입니다. 
 2) 제공하는 웹서비스다 그닥 크지 않다면 이것을 사용해도 괜찮다고 생각을 합니다 

InnoDB 및 BDB 스토리지 엔진은 트랜젝션에 안전한 테이블을 제공한다. BDB는 이 엔진을 지원하는 OS상의 MySQL-Max 바이너리 배포판에 포함되어 있다. InnoDB는 또한 모든 5.0 바이너리 배포판에 디폴트로 포함되어 있다. 소스 배포판의 경우, 여러분의 MySQL을 구성할때 선호하는 방식에 따라서 각각의 엔진을 활성화 또는 비활성화 시킬 수가 있다. 

 1) 트랜잭션-세이프 스토리지 엔진입니다. 
 2) MyISAM 과 비슷하지만 ORACLE 처럼 많은 기능을 지원을 합니다. 
  (* commit, rollback, 장애복구, row-level locking, 외래키 등) 
 3) 다수의 사용자 동시접속과 퍼포먼스가 증가하여 대용량 데이터를 처리할 때 최대의 퍼포먼스를 내도록 설계되었습니다. 
  CPU효율은 어느 디스크 기반의 데이터 베이스와 비교해도 손색이 없고 
  자체적으로 메인 메모리 안에 데이터 캐싱과 인덱싱을 위한 버퍼 풀(pool)을 관리합니다. 
 4) 테이블과 인덱스를 테이블 스페이스에 저장을 하고 테이블 스페이스는 몇개의 서버파일이나 디스크 파티션으로 
  구성되어있습니다. 이것은 MyISAM 과 다른 점인데, MyISAM은 테이블과 인덱스를 각각 분리된 파일로 관리합니다. 
  여기서 중요한것이 이제 InnoDB 를 제대로 사용을 하기 위해서는 테이블 스페이스 라는 개념을 파악을 하셔야합니다. 
  이것에 대해서는 밑에서 따로 언급을 하겠습니다. 
 5) InnoDB 테이블은 OS의 파일 사이즈 한계가 2GB이더라도 상관없이 어느 크기나 가질 수 있습니다. 
 6) InnoDB는 높은 퍼포먼스가 필요한 대용량 사이트에 적합합니다.



'MYSQL' 카테고리의 다른 글

MYSQL 외래키  (0) 2018.05.25
create index  (0) 2018.02.15
index 확인  (0) 2018.02.15
incorrect integer value: '' for column  (0) 2018.01.05
MYSQL 파티셔닝  (0) 2017.12.31

create table mytable ( 
id varchar(12) primary key not null,
name varchar(20) not null
) type=InnoDB;

create table subtable (
sub_id varchar(12) primary key not null,
id varchar(12) not null,
constraint fk_id foreign key ( id ) refrences mytable ( id ) on delete cascade
) type=InnoDB;
 

외래키를 설명하기 위한 아주 심플한 테이블 두개가 만들어 졌습니다. 위 테이블에서는 mytable의 id 컬럼을 참조하여
subtable의 id를 외래키(foreign key)로 만들었습니다. 

constraint fk_id foreign key( id ) references mytable ( id ) on delete cascade 이 부분이 foreign key를 설정하는 부분입니다. mytable의 primary key인 id 컬럼을 참조하여 subtable id 컬럼을 외래키(foreign key)로 참조하겠다는 뜻입니다.
뒤에 on delete cascade 는 옵션 구문인데 다음과 같은 뜻을 가지고 있습니다.

on delelete restrict | cascade | set null | no action | set default

위 옵션은 참조당하는 부모 테이블의 컬럼에 삭제되었을때 외래키가 어떻게 동작할 것인가에 대한 옵션입니다.
열심히 참조하고 있는데 홀연히 사라져 버리면 얼마나 당황 스러울까요? 

restrict - 참조하는 부모테이블의 column이 삭제되어도 지우지 말고 버텨라. 

cascade - 참조하는 부모테이블의 column이 삭제되면 자식 테이블의 column도 모두 삭제하라

set null - 참조하는 부모테이블의 column이 삭제되면 자식 테이블의 column이 모두 null 이 된다

no action - 참조하는 부모테이블의 column이 삭제되도 무시하라. 

set default - 참조하는 부모테이블의 column이 삭제되면 지정된 값으로 대체하라.

이제 잘 만들어진 위 두개의 테이블 중에서 자식 테이블인 subtable의 foreign 키를 alter table로 지워야 할 차례입니다.

[테이블에 외래키(foreign key) 삭제하기] 

형식) alter table [테이블명] drop foreign key [constraint에 줬던 foreign key 별명]

mysql> alter table subtable drop foreign key fk_id;

위에서는 제약조건으로 줬던 fk_id라는 foreign키를 삭제하고 있습니다.

[테이블에 외래키(foreign key) 추가하기]

형식) alter table [테이블명] add constraint [foreign key 별칭] foreign key ( 외래키를 줄 컬럼명 ) references
       [부모테이블명] (참조할 테이블명) [옵션]

mysql> alter table subtable add constraint fk_id foreign key ( id ) references mytable id on delete cascade;

형식만 들여다 보면 무지하게 까다로워 보이네요. 다 제가 무지한 탓입니다. 밑에 예를 들여 다 보면 별것 아니라는 것을 알 수 있을것입니다.

'MYSQL' 카테고리의 다른 글

MYISAM  (0) 2018.06.08
create index  (0) 2018.02.15
index 확인  (0) 2018.02.15
incorrect integer value: '' for column  (0) 2018.01.05
MYSQL 파티셔닝  (0) 2017.12.31

나중에 문제해결을 위해 검색할 누군가를 위해 남겨봅니다.

 

https ssl 보안인증 적용후 스마트에디터의 DHTML 기능이 동작하지 않는 문제가 있었습니다.

질문계시판에도 글을 올렸지만 해결은 되지 못했었습니다.

https://sir.kr/qa/246031?s_tag=%EA%B7%B8%EB%88%84%EB%B3%B4%EB%93%9C5

 

소스를 추적해 보니 \smarteditor2\js\service\HuskyEZCreator.js 파일안의 함수가 비정상동작을 하는 현상이 확인되었습니다.

 

저는 가상호스팅 환경에서 웹서버를 돌리고 있는 상태입니다.

DHTML의 기능은 <iframe> 태그를 통해 구현되는데 프레임내에 정상적인 데이터가 삽입되지 않는것을 확인하였습니다.

 

하루종일 뻘짓을 하고 결국 찾아낸 원인은 SSL 적용시 httpd.ssl.conf (사용자마다 이름은 다를수 있음) 파일내에 설정의 문제였습니다.

 

Header always append X-Frame-Options DENY

로 되어 있는 설정을 

Header always append X-Frame-Options SAMEORIGIN

로 변경해주시면 됩니다.

 

돌고돌아 결국은 문제를 해결했지만 다소 어이없는 곳에서 원인을 찾았기에 허탈하기도 하지만

혹시라도 저와 유사한 경우에 계실분을 위해 기록을 남겨둡니다.


======================

## ClickJacking과 같은 공격의 보안을 위해 X-Frame-Options 헤더 사용

  - DENY            해당 페이지는 frame을 표시 않함.
  - SAMEORIGIN      해당 페이지와 동일한 orgin에 해당하는 frame만 표시.
  - ALLOW-FROM https://sample.com  해당 페이지는 지정된 orgin에 해당하는 frame만 표시.

<?php header('X-Frame-Options: DENY'); ?>
<?php header('X-Frame-Options: SAMEORIGIN'); ?>
<?php header('X-Frame-Options: ALLOW-FROM uri'); ?>

#ex)

<?php
header("Content-Type: text/html; charset=utf-8");
header("X-Content-Type-Options: nosniff");
header("X-Frame-Options: SAMEORIGIN");
header("Cache-Control: must-revalidate");
$offset = 60 * 60 * 24 * 3;
$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
header($ExpStr);
?>

### 서버설정이 가능하다면..

### Apache :

Header always append X-Frame-Options SAMEORIGIN

### ngnix :

add_header X-Frame-Options SAMEORIGIN; 

'PHP 프로그래밍' 카테고리의 다른 글

mysql old_password 구현  (0) 2024.01.10
PHPEXCEL 다운로드  (0) 2018.03.05
include 파악  (0) 2018.02.01
CMS  (0) 2018.01.14
PHP 이카운트 연동  (0) 2018.01.14

header('Content-Type: application/vnd.ms-excel');


header('Content-Disposition: attachment;filename=apply.xlsx');


header('Cache-Control: max-age=0');





$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');


$objWriter->save('php://output');

'PHP 프로그래밍' 카테고리의 다른 글

mysql old_password 구현  (0) 2024.01.10
https ssl 보안인증 적용후 스마트에디터 DHTML 안되는 문제해결  (0) 2018.05.19
include 파악  (0) 2018.02.01
CMS  (0) 2018.01.14
PHP 이카운트 연동  (0) 2018.01.14

+ Recent posts