일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 웹뷰
- AWS
- php
- 카카오톡
- angular4
- 감사일기
- node.js
- JavaScript
- 알려줌
- 도메인
- nextjs
- angular
- fanzeel
- hybrid
- NeXT
- cors
- Elastic Beanstalk
- Android
- TypeScript
- 네이티브
- 페이스북
- https
- beanstalk
- 안드로이드
- Route53
- node
- S3
- ios
- swift
- react
- Today
- Total
쪼렙 as! 풀스택
약간 복잡한 TableViewCell 인 경우, Storyboard 안에서 모두 구현하기 보다는, XIB 를 따로 만들어서 관리하는걸 선호한다. 그런데 XIB 로 따로 만든 셀에서, DynamicHeight 가 적용이 안되잖아!! 한참 헤매다 해결 한 방법. 내가 만든 TableViewCell 에다가 self.translatesAutoresizingMaskIntoConstraints = false ViewController.swift let nib = UINib(nibName: "TestCell", bundle: nil) tableView.register(nib, forCellReuseIdentifier: "TestCell") class TestCell : UITableViewCell override f..
WKWebView 가 있는 ViewController class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate, WKScriptMessageHandler { @IBOutlet weak var webView: WKWebView! private let HOME_URL = "https://MYWEB.URL" override func viewDidLoad() { super.viewDidLoad() webView.uiDelegate = self webView.navigationDelegate = self // webView.configuration.websiteDataStore = WKWebsiteDataStore.default() //..
이때까지 소셜로그인 하면, AppDelegate 에, 이것저것 설정해 두었었다. 근데 iOS13 에서, 아무리 해도, 카카오 로그인 핸들러가 안불러지는것이다. 알고보니, SceneDelegate 에도 적용을 해줘야 한다....;; SceneDelegate.swift func sceneDidEnterBackground(_ scene: UIScene) { KOSession.handleDidEnterBackground() } func sceneDidBecomeActive(_ scene: UIScene) { KOSession.handleDidBecomeActive() } func scene(_ scene: UIScene, openURLContexts URLContexts: Set) { if let url = U..
카카오톡 로그인 Javascript SDK 로 개발했을 때, 안드로이드 모바일 브라우저에서는 자동으로 '카카오톡 앱'이 호출된다. 문제는 하이브리드앱으로 '웹뷰'를 패키징한 형태로 서비스를 하게 될때는, 카카오톡 로그인을 하면 우리가 원하는대로 '카카오톡 앱' 이 호출되지 않고, 웹 상태에서 '카카오 로그인' 폼이 뜨게 된다. 사실 사용자 입장에서는 '하이브리드앱'인지 '웹뷰'서비스인지 알리가 만무하고, 카카오톡 로그인을 누르면, 당연히 사용하고 있는 카카오톡 앱이 호출되지 않고, 이메일부터 일일히 입력해야하는 '카카오 로그인' 폼 웹화면이 뜬다면, 얼마나 불편한 서비스라 생각하겠는가. 이것을 해결하기 위해 벼라별 방법을 다 찾아봤다. ChromeClient 와 WebClient 를 오버라이드해서, 새로..
정말 어렵고 힘들었다. 너무 힘들었어서, 자세히 쓰기도 귀찮다. 내가 원한 결과. 1:N 의 데이터가 나오는 INNER JOIN 을 한후, 'dealAt' 이라는 컬럼으로 DESC 정렬을 한 후에, 가장 최신의 데이터 하나만 선택해서, 결과적으로 1:1 의 데이터만 가져오는 JOIN 을 하고 싶었다. 첫번째 시도. 서브쿼리를 이용해서, JOIN 을 한 후, Group BY 를 하는 것이다. select * from ( select id, name, hp from member order by date desc )a group by id [출처] group by 내부 정렬방법|작성자 zgabriel 이런식이였다. 그런데, 서브 쿼리 안에서 이미 JOIN 을 하고 이미 ORDER BY DESC 가 되어있었지만..
https://alzi.net 에 정기결제를 붙이는 작업을 했다. 정기결제는 일반결제와 프로세스가 다르다. 이전에 일반결제로 다 붙여놓았더니, 대표가, 정기결제로 하쟤서 어쩔수 없이 다 바꿨다. 일단 우리는 KG 이니시스를 이용한 정기결제를 사용하게 되었다. 이니시스로 '정기결제' 요청을 데스크탑 PC 에서 하면, '주민등록번호'와, '공인인증서'를 요구한다. ;;;; 지금이 어떤 시댄데;;; 결제프로세스는 이렇다. 일단, 사용자의 카드정보를 입력하는 이니시스 결제창을 띄운다음, 사용자의 '빌링키'를 얻어온다. IMP.request_pay({ pg : "html5_inicis.INIBillTst", // 실제 계약 후에는 실제 상점아이디로 변경 pay_method : 'card', // 'card'만 지..
이번에 매일감사 매일기도 앱을 2.0.0으로 업데이트를 하면서, okhttp 라이브러리 버전을 3.12 에서 3.14로 업데이트 했다. 오늘 갑자기 Firebase - Crashlytics 에서 에러 빈도수가 갑자기 많아졌다고 메일이 날라오는게 아닌가. 내 앱의 최소 지원버전은 4.4 인데, okhttp 에서 막상 4.4는 지원하지 않는다는 에러를!!! 바로 okhttp change log 를 살펴봤다. https://square.github.io/okhttp/changelog/#version-3130 3.13 버전부터 최소 안드로이드 5.0으로 판올림을 했다 ㅠㅠ 일단 부랴부랴 다시 3.12 버전으로 다운시켜서 빌드해서 앱 업데이트를 했다. 나중에는 내 앱에서도 안드로이드 4.4를 지원하지 않을 생각을..
RecyclerView 를 이용해서, 아이템간 마진을 이용하려면, ItemDecoration 을 이용해야 한다. 보통은 DividerItemDecoration 을 이용하는데, 내 경우에는, Horizontal 방향을 사용해야 했고, 그래서 양쪽 끝에도 동일한 마진이 들어가길 원했다. 보통의 DividerItemDecoration 을 이용하면, 첫번째 아이템 전에는 마진이 들어가지 않기 때문에, 직접 ItemDecoration 을 서브클래싱 해서 사용해야 했다. SpaceDecoration.kt class SpaceDecoration(private val size: Int) : RecyclerView.ItemDecoration() { override fun getItemOffsets(outRect: Rec..
MySQL 의 SPATIAL 데이터중, 폴리곤 데이터를 Insert 쿼리. x,y 좌표를 순서대로 입력해주면 되는데, 시작과 끝은 똑같은 값이다. (시작과 끝이 만나야하기 때문에...) INSERT INTO mytable(poly) VALUES(POLYGONFROMTEXT('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))')) - 한 점을 가지고, 폴리곤 영역안에 포함되어있는 레코드를 Select 해오기. SELECT name, AsWKT(poly) AS poly FROM mytable WHERE MBRContains(poly, GeomFromText('Point(1 1)'))
코틀린에서 Glide를 사용하려고 했더니, Failed to find GeneratedAppGlideModule. You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler in your application and a @GlideModule annotated AppGlideModule implementation or LibraryGlideModules will be silently ignored 이런 워닝이 뜬다. GlideAppModule을 서브클래싱해서 만들고, GlideApp을 이용하면, 이 워닝이 없어진다. 1. build.gradleapply plugin: 'kotlin-kap..