앱을 개발하면서 간단한 사용자의 설정 정보 또는 무겁지 않은 데이터를 저장할때 사용하면 유용합니다.
저장된 데이터는 앱을 삭제하거나 앱 데이터를 삭제하면 지워지는 데이터 이므로 저장하려는 데이터를 어디에 저장할것인 잘 판단해야 합니다.
앱을 개발하면서 간단한 사용자의 설정 정보 또는 무겁지 않은 데이터를 저장할때 사용하면 유용합니다.
저장된 데이터는 앱을 삭제하거나 앱 데이터를 삭제하면 지워지는 데이터 이므로 저장하려는 데이터를 어디에 저장할것인 잘 판단해야 합니다.
Array.every(callbackfn: (value: T, index: number, array: T[]) => unknow, thisArg?: any): boolean
Array.every()는 배열의 모든 항목이 조건과 일치해야 true를 반환한다.
Array.some(callbackfn: (value: T, index: number, array: T[]) => unknow, thisArg?: any): boolean
Array.some()은 배열의 항목중 하나라도 조건과 일치 하면 true를 반환한다.
Array.slice(start?: number, end?: number): T[];
Array.splice(start:number, deleteCount?: number): T[];
slice와 splice는 비슷한 기능을 수행하지만 위 코드를 보면 차이가 있는걸 확인할수 있다.
1. 인자값을 넘기지 않았을때의 반환되는 값
slice()는 대상 배열의 모든값을 반환하지만 splice()는 아무것도 반환하지 않는다.
2. 두번째 인자값의 처리방법
slice(), end?:number, 배열의 처음부터 index만큼 움직인다고 생각하면 된다. 또한 index항목의 값은 포함하지 않는다.
splice(), deleteCount?: number, 배열의 처음이 아닌 첫 인자(start: number)값을 기준으로 두번째 인자값 만큼의 배열값을 반환한다.
Array.slice(), Array.splice()는 처리 대상의 배열이 처리전과 처리후의 값이 다르다.
Array.slice()는 처리후에도 원래의 값을 유지하고 있는 반면 Array.splice()는 처리후 원래의 값이 변경된다.
Array.slice();
Array.splice();
어떤 처리를 하느냐에 따라 두 기능을 활용하면 될것같다.
SELECT * FROM user WHERE name LIKE '%aaa%'
String name = "aaa"; Query query = new Query(); query.addCriteria(Criteria.where("name").regex(name);
즐겨 찾기 기능을 위해 ImageView를 사용한 Toggle기능을 구현.
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_activated="true" android:drawable="@drawable/ic_star_24dp" /> <item android:drawable="@drawable/ic_star_border_24dp" /> </selector>
<ImageView android:src="@drawable/selector" .. .. />
star.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View view) { view.setActivated(!view.isActivated()); } });
1 2 3 | SELECT * FROM table WHERE replace(column_name, ' ', '') = 'aaa' |
1 2 3 4 5 | StringExpression se = StringTemplate.create("replace({0}, ' ', '')", column_name); return select().from(o).where( se.eq('aaa') ).list(o); |
1 2 | // AndroidManifest.xml에 사용권한 추가 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> |
1 2 3 4 5 6 7 8 9 10 | // 내부 사진첩 열기 ImageView imageView = findViewById(R.id.img); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(MediaStore.Images.Media.CONTENT_TYPE); startActivityForResult(intent, 1000); } }); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { switch (requestCode) { case 1000: // 선택한 이미지를 ImageView에 표시 imageView.setImageURI(data.getData()); // 이미지 내부경로 imagePath = getPath(data.getData()); break; } } private String getPath(Uri uri) { String [] proj = {MediaStore.Images.Media.DATA}; CursorLoader cursorLoader = new CursorLoader(this, uri, proj, null, null, null); Cursor cursor = cursorLoader.loadInBackground(); int index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(index); } |
1 2 3 4 5 6 7 8 9 10 11 12 | // 전역변수 선언 private FirebaseFirestore db; private FirebaseStorage storage; private StorageReference storageRef; private StorageReference recvRef; // 초기화 및 Storage 버킷설정 private void init() { db = FirebaseFirestore.getInstance(); storage = FirebaseStorage.getInstance("xxx-xxx.appspot.com"); storageRef = storage.getReference(); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Uri file = Uri.fromFile(new File(companyImgPath)); // 업로드 폴더 지정 recvRef = storageRef.child("company/" + file.getLastPathSegment()); recvRef.putFile(file).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { // 업로드 완료후 다운로드 경로 가져오기 recvRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() { @Override public void onSuccess(Uri uri) { // 다운로드 경로 표시 (uri.toString()) Log.d(TAG, uri.toString()); } }); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.d(TAG, "Image Upload failure."); } }); |
Coustom 객체를 사용한 조회
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | db.collection("company") .get() .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { if (task.isSuccessful()) { for (QueryDocumentSnapshot document : task.getResult()) { companyList.add(document.toObject(Company.class)); } } else { Log.w(TAG, "Error getting company documents.", task.getException()); } } }); |
1 2 | // 조회된 데이터 매핑 Company company = document.toObject(Company.class); |
Coustom 객체를 사용한 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | db.collection("company") .add(company) // 객체를 넣어준다. .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { finish(); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Failure save"); } }); |
1 2 3 | dependencies { implementation 'com.mikhaellopez:circularimageview:4.0.1' } |
app:civ_circle_color (color) -> default WHITEapp:civ_border (boolean) -> default trueapp:civ_border_color (color) -> default WHITEapp:civ_border_width (dimension) -> default 4dpapp:civ_shadow (boolean) -> default falseapp:civ_shadow_color (color) -> default BLACKapp:civ_shadow_radius (float) -> default 8.0fapp:civ_shadow_gravity (center, top, bottom, start or end) -> default bottom1 2 3 4 5 6 7 8 9 | <com.mikhaellopez.circularimageview.CircularImageView android:layout_width="250dp" android:layout_height="250dp" android:src="@drawable/image" app:civ_border_color="#3f51b5" app:civ_border_width="4dp" app:civ_shadow="true" app:civ_shadow_radius="10" app:civ_shadow_color="#3f51b5"/> |
1 2 3 4 5 6 7 8 9 10 11 12 13 | CircularImageView circularImageView = findViewById(R.id.circularImageView); // Set Circle color for transparent image circularImageView.setCircleColor(Color.WHITE); // Set Border circularImageView.setBorderColor(Color.RED); circularImageView.setBorderWidth(10); // Add Shadow with default param circularImageView.setShadowEnable(true); // or with custom param circularImageView.setShadowRadius(15); circularImageView.setShadowColor(Color.RED); circularImageView.setBackgroundColor(Color.RED); circularImageView.setShadowGravity(CircularImageView.ShadowGravity.CENTER); |
1 2 3 | dependencies { implementation 'com.squareup.picasso:picasso:2.71828' } |
1 | Picasso.get().load("http://i.imgur.com/DvpvklR.png").into(imageView); |
// html// js // 일반적인 이미지 변경 할경우 $('#banner').attr('src', '/image/bb.jpg'); // 같은이름의 이미지로 변경할 경우 $('#banner').attr('src', '/image/bb.jpg?param=123');
var selection_text = document.selection.createRange().text; alert(selection_text);
function openPopup() {
var url = '/popup.jsp';
var option = 'width=100, height=100';
window.open(url, '', option);
}
window popup optionTextItem ti01 = new TextItem("name", "title");
ti01.setKeyPressFilter("[0-9,]");
앱을 개발하면서 간단한 사용자의 설정 정보 또는 무겁지 않은 데이터를 저장할때 사용하면 유용합니다. 저장된 데이터는 앱을 삭제하거나 앱 데이터를 삭제하면 지워지는 데이터 이므로 저장하려는 데이터를 어디에 저장할것인 잘 판단해야 합니다. 데이터 저장 ...