Web Tech/PHP2017.02.11 00:03
크리에이티브 커먼즈 라이선스
Creative Commons License

class나 function 선언시 function_exists나 class_exists를 이용하지 않으면 미리보기시 해당 class나 function이 두번 선언되어서 에러가 발생할 수 있음


상수 define, defined를 이용하거나  function_exists나 class_exists를 이용하여 회피


아래 예제 코드는 xeschool 에 있는 pop opener입니다.


예제 코드

<?php

    if(!defined("__XE__")) exit();

    if(Context::get('module') == 'admin') return;


    if($called_position == 'before_module_proc') {

        // 팝업 스크립트 처리

        function getPopupScript($val) {


            if($val->content) {

                $order = array("\r\n", "\n", "\r");

                $replace = '';

                $val->content = str_replace($order, $replace, $val->content);

                $val->content = str_replace("'", '&#39;', $val->content);

            }


            $popup_content = "{id:'".$val->popup_srl."'"

                .($val->popup_type?",popup_type:'".$val->popup_type."'":"")

                .($val->content?",content:'".$val->content."'":"")

                .($val->popup_url?",url:'".$val->popup_url."'":"")

                .($val->popup_link?",link:'".$val->popup_link."'":"")

                .($val->popup_link_type?",link_type:'".$val->popup_link_type."'":"")

                .($val->open_type?",open_type:'".$val->open_type."'":"")

                .($val->top?",top:'".$val->top."'":"")

                .($val->left?",left:'".$val->left."'":"")

                .($val->width?",width:'".$val->width."'":"")

                .($val->height?",height:'".$val->height."'":"")

                .($val->exp_days?",exp_days:'".$val->exp_days."'":"")

.($val->popup_style?",popup_style:'".$val->popup_style."'":"")

.($val->popup_checkbox?",popup_checkbox:'".$val->popup_checkbox."'":"")

.($val->element_id?",element_id:'".$val->element_id."'":"")

                ."}";


            return $popup_content;

        }


        // jQuery로 팝업 열기

        function setPopupScript($popupList) {


            Context::addCssFile('./addons/popup_opener/popup_opener.css');

            Context::addJsFile('./addons/popup_opener/jquery.popup_opener.1.5.4.3.js');


Context::loadLang(_XE_PATH_.'modules/popup/lang');

$msg_xe_popup = Context::getLang('msg_popup_do_not_display');


            $addPopupScript = '<script type="text/javascript">//<![CDATA['."\n";

$addPopupScript .= "var msg_popup_do_not_display = '".$msg_xe_popup."';\n";

$addPopupScript .= 'jQuery(function(){'."\n";


            if($popupList) {

                if(!is_array($popupList)) $popupList = array($popupList);


                foreach($popupList as $val){

                    $addPopupScript .= "jQuery('<div></div>',{id:'xe_popup".$val->popup_srl."'})";

                    $addPopupScript .= ".css({'position':'absolute','width':'".$val->width."px'})";

                    $addPopupScript .= ".xe_popup(".getPopupScript($val).");\n";

                }

            }


            $addPopupScript .= '});'."\n";

            $addPopupScript .= '//]]></script>'."\n";


            Context::addHtmlFooter($addPopupScript);

        }


// 팝업 본문 구하기

function getPopupContent($document_srl) {

$oDocumentModel = &getModel('document');

$oDocument = $oDocumentModel->getDocument($document_srl);


return $oDocument->get('content');

}


if($this->module_info->module_srl) {


$oModuleModel = &getModel('module');

$isActionPopupOpen = false;


// 팝업 모듈 확인

$args->site_srl = $this->module_info->site_srl;

            $popup_module_info = $oModuleModel->getModuleInfoByMid('popup', $args->site_srl);

            if(!$popup_module_info) return;


// 유효일자 팝업 목록 구하기

$args->curdate = date("Ymd", mktime());

$output = executeQueryArray('popup.getPopupValidDate', $args);

if(!$output->toBool()) return;


if(count($output->data) > 0) {

foreach($output->data as $k => $pop) {

$pop->element_id = $addon_info->element_id;


if($pop->target_type == 'action' && $this->act == $pop->target_actions) {

$pop->content = getPopupContent($pop->document_srl);

$actionPopupList[$k] = $pop;

$isActionPopupOpen = true;

} else if ($pop->target_type == 'module') {

if ($this->module_srl == $pop->target_srl || $popup_module_info->module_srl == $pop->target_srl) {

$pop->content = getPopupContent($pop->document_srl);

$modulePopupList[$k] = $pop;

}

}

}

}


// 팝업 세팅

if($isActionPopupOpen) setPopupScript($actionPopupList);

else setPopupScript($modulePopupList);

}


    }

?>


수정 코드

<?php

if (!defined('popup_opener_addon_func_loaded')) {

define('popup_opener_addon_func_loaded', 1);


// 팝업 스크립트 처리

function getPopupScript($val) {


if ($val->content) {

$order        = array("\r\n", "\n", "\r");

$replace      = '';

$val->content = str_replace($order, $replace, $val->content);

$val->content = str_replace("'", '&#39;', $val->content);

}


$popup_content = "{id:'" . $val->popup_srl . "'"

. ($val->popup_type ? ",popup_type:'" . $val->popup_type . "'" : "")

. ($val->content ? ",content:'" . $val->content . "'" : "")

. ($val->popup_url ? ",url:'" . $val->popup_url . "'" : "")

. ($val->popup_link ? ",link:'" . $val->popup_link . "'" : "")

. ($val->popup_link_type ? ",link_type:'" . $val->popup_link_type . "'" : "")

. ($val->open_type ? ",open_type:'" . $val->open_type . "'" : "")

. ($val->top ? ",top:'" . $val->top . "'" : "")

. ($val->left ? ",left:'" . $val->left . "'" : "")

. ($val->width ? ",width:'" . $val->width . "'" : "")

. ($val->height ? ",height:'" . $val->height . "'" : "")

. ($val->exp_days ? ",exp_days:'" . $val->exp_days . "'" : "")

. ($val->popup_style ? ",popup_style:'" . $val->popup_style . "'" : "")

. ($val->popup_checkbox ? ",popup_checkbox:'" . $val->popup_checkbox . "'" : "")

. ($val->element_id ? ",element_id:'" . $val->element_id . "'" : "")

. "}";


return $popup_content;

}


// jQuery로 팝업 열기

function setPopupScript($popupList) {


Context::addCssFile('./addons/popup_opener/popup_opener.css');

Context::addJsFile('./addons/popup_opener/jquery.popup_opener.1.5.4.3.js');


Context::loadLang(_XE_PATH_ . 'modules/popup/lang');

$msg_xe_popup = Context::getLang('msg_popup_do_not_display');


$addPopupScript = '<script type="text/javascript">//<![CDATA[' . "\n";

$addPopupScript .= "var msg_popup_do_not_display = '" . $msg_xe_popup . "';\n";

$addPopupScript .= 'jQuery(function(){' . "\n";


if ($popupList) {

if (!is_array($popupList)) $popupList = array($popupList);


foreach ($popupList as $val) {

$addPopupScript .= "jQuery('<div></div>',{id:'xe_popup" . $val->popup_srl . "'})";

$addPopupScript .= ".css({'position':'absolute','width':'" . $val->width . "px'})";

$addPopupScript .= ".xe_popup(" . getPopupScript($val) . ");\n";

}

}


$addPopupScript .= '});' . "\n";

$addPopupScript .= '//]]></script>' . "\n";


Context::addHtmlFooter($addPopupScript);

}


// 팝업 본문 구하기

function getPopupContent($document_srl) {

$oDocumentModel = &getModel('document');

$oDocument      = $oDocumentModel->getDocument($document_srl);


return $oDocument->get('content');

}


}



if (!defined("__XE__")) exit();

if (Context::get('module') == 'admin') return;


if ($called_position == 'before_module_proc') {

if ($this->module_info->module_srl) {


$oModuleModel      = &getModel('module');

$isActionPopupOpen = false;


// 팝업 모듈 확인

$args->site_srl    = $this->module_info->site_srl;

$popup_module_info = $oModuleModel->getModuleInfoByMid('popup', $args->site_srl);

if (!$popup_module_info) return;


// 유효일자 팝업 목록 구하기

$args->curdate = date("Ymd", mktime());

$output        = executeQueryArray('popup.getPopupValidDate', $args);

if (!$output->toBool()) return;


if (count($output->data) > 0) {

foreach ($output->data as $k => $pop) {

$pop->element_id = $addon_info->element_id;


if ($pop->target_type == 'action' && $this->act == $pop->target_actions) {

$pop->content        = getPopupContent($pop->document_srl);

$actionPopupList[$k] = $pop;

$isActionPopupOpen   = true;

} else if ($pop->target_type == 'module') {

if ($this->module_srl == $pop->target_srl || $popup_module_info->module_srl == $pop->target_srl) {

$pop->content        = getPopupContent($pop->document_srl);

$modulePopupList[$k] = $pop;

}

}

}

}


// 팝업 세팅

if ($isActionPopupOpen) setPopupScript($actionPopupList);

else setPopupScript($modulePopupList);

}


}

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by ned3y2k
분류없음2016.10.18 11:17
크리에이티브 커먼즈 라이선스
Creative Commons License

안드로이드 실습 소스 코드


SqlLite.zip


저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by ned3y2k
Programing/Java2016.01.26 14:34
크리에이티브 커먼즈 라이선스
Creative Commons License

    public void dumpInputStream(InputStream inputStream) {

        File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "dump.log");

        try {

            OutputStream outputStream = new FileOutputStream(file);

            IOUtils.copy(inputStream, outputStream);

        } catch (IOException e) {

            e.printStackTrace();

        }

        context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));

    }


InputStream을 디버그할 일이 있어서 SD카드에 저장하는 것을 만들어보았는데 USB 연결시에 MTP에 바로 노출 되지 않아서 찾아보니....

안드로이드 시스템에 새로운 파일이 추가 되었다고 알려야 한다.

저작자 표시 비영리 동일 조건 변경 허락
신고

'Programing > Java' 카테고리의 다른 글

Android 파일 추가시 MTP에 뜨지 않는 문제  (0) 2016.01.26
JSONAdapter  (0) 2012.07.24
Posted by ned3y2k
분류없음2014.04.03 21:09
크리에이티브 커먼즈 라이선스
Creative Commons License

제주우분투사용자 모임 토카톤

 

소개

토카톤(Talk-a-thon)TalkMarathon의 합성어로 제주우분투 사용자 모임의 새로운 시도입니다.

기존의 발표자가 청자에게 단반향으로 커뮤니케이션을 시도했던 방식을 탈피하여 역할을 정하지 않고 누구나 자유로운 시간에 발표자와 청자가 될 수 있는 형태를 뜻합니다.

 

토카톤의 목적

- 제주 지역내 IT 커뮤니케이션 활성화

- IT 또는 비 IT 직종 종사자의 지식 공유 및 심화

 

주제와 참여자의 역할

- IT 범주에 속한 모든 것을 주제로 정하고 진행하시면 됩니다.

- 프로그래밍, 운영체제(서버나 사용자/개인 PC)의 운영, 네트웍 운영, 기타 등등.

- 진행 중 궁금한 사항이나 알리고 싶은 내용이 있다면 사회자에게 알리면 됩니다.

 

사회자(진행임원)의 역할

- 해당하는 내용의 Talk가 참여한 사람들에게 알려질 수 있도록 노력합니다.

- 사회자는 제주우분투사용자 모임의 리더나 리더가 정한 사람이며 모임 공지글에 게재합니다.

 

개최임원의 역할

- 사회자와 동일하게 리더나 리더가 정한 사람입니다.

- 장소와 일정을 결정합니다.

- 행사시 미비점을 종합하여 개선책을 적용합니다.

- 스폰서를 찾아봅니다.

- 참여자 종합

- 행사 홍보

- 페이스북, 블로그, 각 단체 등...

 

이번 모임 정보

장소: 제주대학교 공대 4호관 예정

시간: 14. 4. 11() 저녁 ~ 14. 4. 12()

- 진행 중 아무 때나 참여 가능하며 개인적인 용무가 있으신 분은 용무를 보러 가셔도 좋습니다.

개최 및 사회자: 문경대

사전참여신청: 페이스북 https://www.facebook.com/groups/ubuntu.ko.jeju/

개최자 이메일 ned3y2k@hotmail.com

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by ned3y2k
Programing2013.09.03 10:27
크리에이티브 커먼즈 라이선스
Creative Commons License

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;


using System.Runtime.InteropServices;


namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }


        const int WM_SYSCOMMAND = 0x0112;

        const int SC_MONITORPOWER = 0xF170;

        const int ON = -1;

        const int OFF = 2;


        [DllImport("user32.dll", SetLastError = true)]

        private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);



        private void button1_Click(object sender, EventArgs e)

        {

            SendMessage(this.Handle, WM_SYSCOMMAND, new IntPtr(SC_MONITORPOWER), new IntPtr(OFF));

        }

    }

}


참고문서: http://www.kev009.com/wp/projects/lcdoff/


첨부파일: LCDoff.zip 은 어셈으로 작성된 코드이다.


저작자 표시 비영리 동일 조건 변경 허락
신고

'Programing' 카테고리의 다른 글

모니터 C#으로 끄기  (0) 2013.09.03
.NET Code Conversion?  (0) 2012.11.07
MySQL UPDATE JOIN 예제  (0) 2012.02.28
C# private 필드 리플렉션  (0) 2012.01.16
구글 api 모음  (0) 2012.01.10
ios sns 내용 공유 킷  (0) 2012.01.10
Posted by ned3y2k
분류없음2013.06.26 19:07
크리에이티브 커먼즈 라이선스
Creative Commons License

I figure the BCDEdit steps, modified for the USB drive (E:), will apparently be...

Bcdedit –createstore c:\temp\BCD
Bcdedit –store c:\temp\BCD –create {bootmgr} /d “Boot Manager”
Bcdedit –store c:\temp\BCD –set {bootmgr} device boot
Bcdedit –store c:\temp\BCD –create /d “WINPE” –application osloader
Bcdedit –import c:\temp\BCD


This returns a GUID value, which is substituted in the below...

Bcdedit –store E:\boot\BCD –set <GUID> osdevice partition=boot
Bcdedit –store E:\boot\BCD –set <GUID> device partition=boot
Bcdedit –store E:\boot\BCD –set <GUID> path \i386\setupldr.bin
Bcdedit –store E:\boot\BCD –set <GUID> systemroot \windows
Bcdedit –store E:\boot\BCD –set <GUID> winpe yes
Bcdedit –store E:\boot\BCD –set <GUID> detecthal yes
Bcdedit –store E:\boot\BCD –displayorder <GUID> -addlast


link: http://www.911cd.net/forums//index.php?showtopic=20186&mode=threaded&pid=135415

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by ned3y2k
Other2013.05.10 13:52
크리에이티브 커먼즈 라이선스
Creative Commons License

The 'X' button, and 'data-rel="back"' links in a dialog are ignored when running in an embedded browser on iOS devices. When running from Safari the close button works fine, but when running from a UIWebView the X button is ignored.

헐... JQM의 X버튼이랑 "data-rel=back"은 IOS 디바이스의 내부 브라우저에선 실행이 안 된단다!! 음.... 이거참...

https://github.com/jquery/jquery-mobile/issues/2190

저작자 표시
신고
Posted by 풍객사
Other2013.05.10 13:46
크리에이티브 커먼즈 라이선스
Creative Commons License


FirefoxPortable_20.0_Korean.paf.part1.rar


FirefoxPortable_20.0_Korean.paf.part2.rar


FirefoxPortable_20.0_Korean.paf.part3.rar


FirefoxPortable_20.0_Korean.paf.part4.rar

분할압축파일입니다.

받아서 설치하시면 됩니다.

포터블!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

저작자 표시 비영리
신고
Posted by 풍객사
Windows Server Tech2013.03.21 17:23
크리에이티브 커먼즈 라이선스
Creative Commons License

업로드 요청 파일의 용량이 일정량 이상 보다 큰 경우 404.3 에러가 발생하는데 이 문제의 해결 방법은 간단하다


요청필터링->기본설정편집->허용되는 최대 콘텐트 길이(바이트)


이 수치를 늘려준다!


이것 때문에 엄한 삽질을!!! +.+

저작자 표시 비영리 동일 조건 변경 허락
신고

'Windows Server Tech' 카테고리의 다른 글

IIS8(7.5) 대용량 파일 업로드시 404.3 문제  (0) 2013.03.21
Posted by ned3y2k
Web Tech2012.11.27 18:29
크리에이티브 커먼즈 라이선스
Creative Commons License

# mysqldump -udbid -ppassword --compatible=mysql40  --default-character-set=euckr dbname > outputfilename.sql


mysql 4.0인 경우는 당연히 utf8을 지원하는 스펙이 없어서 위 처럼 한다.

저작자 표시 비영리 동일 조건 변경 허락
신고

'Web Tech' 카테고리의 다른 글

MySQL 5에서 4로 다운그레이 할때  (0) 2012.11.27
html5 form element kit  (0) 2012.01.10
C#, VB.net로 만든 코드를 웹으로~  (0) 2011.10.07
플래쉬 소스  (0) 2011.06.07
Posted by ned3y2k