- 1
Админ - уебок, хранивший пароли открытым текстом
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Админ - уебок, хранивший пароли открытым текстом
Чекайте свои мыла в утечках, ебланы
−2
Удалите мой аккаунт
Удалите мой аккаунт
0
status = message.status
if message.status == .delivered || message.status == .failed || message.status == .read {
button.isHidden == false
button.isUserInteractionEnabled = true
} else {
button.isHidden == true
button.isUserInteractionEnabled = false
}
песааатель
0
nonisolated
private static func mapRules(firstName: String, surname: String, middleName: String) -> Bool {
let mainRule = firstName.isNotEmpty &&
surname.isNotEmpty &&
firstName.isValidPersonalData &&
surname.isValidPersonalData
let additionalRule = middleName.isNotEmpty &&
middleName.isValidPersonalData
return additionalRule ? mainRule && additionalRule : mainRule
}
extension String {
var isValidPersonalData: Bool {
let regex = "^(?!\\s)[a-zA-Zа-яА-ЯёЁ\\s'-.]*[a-zA-Zа-яА-ЯёЁ][a-zA-Zа-яА-ЯёЁ\\s'-.]*$"
return NSPredicate(format: "SELF MATCHES %@", regex).evaluate(with: self)
}
}
+1
struct Ololo: Comparable {
let value: Int
static func < (lhs: Ololo, rhs: Ololo) -> Bool {
return lhs.value < rhs.value
}
static func < (lhs: Ololo, rhs: Ololo) -> String {
if lhs.value < rhs.value {
return "LESS"
} else if lhs.value > rhs.value {
return "MORE"
} else {
return "EQUAL"
}
}
}
let ololo1 = Ololo(value: 100)
let ololo2 = Ololo(value: 200)
let bool: Bool = ololo1 < ololo2
let string: String = ololo1 < ololo2
А в плюсах можно в operator> любую херь вернуть © jojaxon
Наверное, я поторопился, когда сказал, что крестобляди будет в свифте тесно.
0
import Foundation
@objc protocol SomethingDoable {
func doSomething()
}
class Inner: SomethingDoable {
@objc func doSomething() {
print("Inner!")
}
}
@objc class Outer: NSObject {
let inner: SomethingDoable = Inner()
override func forwardingTarget(for aSelector: Selector!) -> Any? {
return inner
}
}
let outer = Outer()
outer.perform(#selector(SomethingDoable.doSomething))
Удачного дебага!
+1
/* Create a JSON object from JSON data stream. The stream should be opened and configured. All other behavior of this method is the same as the JSONObjectWithData:options:error: method.
*/
open class func jsonObject(with stream: InputStream, options opt: ReadingOptions = []) throws -> Any {
var data = Data()
guard stream.streamStatus == .open || stream.streamStatus == .reading else {
fatalError("Stream is not available for reading")
}
repeat {
var buffer = [UInt8](repeating: 0, count: 1024)
var bytesRead: Int = 0
bytesRead = stream.read(&buffer, maxLength: buffer.count)
if bytesRead < 0 {
throw stream.streamError!
} else {
data.append(&buffer, count: bytesRead)
}
} while stream.hasBytesAvailable
return try jsonObject(with: data, options: opt)
}
Потоковое чтение JSON от авторов "iСделаль"
+1
import SwiftUI
struct LandmarkDetail: View {
@EnvironmentObject var userData: UserData
var landmark: Landmark
var landmarkIndex: Int {
userData.landmarks.firstIndex(where: { $0.id == landmark.id })!
}
var body: some View {
VStack {
MapView(landmark: landmark)
.frame(height: 300)
CircleImage(image: landmark.image(forSize: 250))
.offset(y: -130)
.padding(.bottom, -130)
VStack(alignment: .leading) {
HStack {
Text(landmark.name)
.font(.title)
Button(action: {
self.userData.landmarks[self.landmarkIndex].isFavorite.toggle()
}) {
if self.userData.landmarks[self.landmarkIndex].isFavorite {
Image(systemName: "star.fill")
.foregroundColor(Color.yellow)
} else {
Image(systemName: "star")
.foregroundColor(Color.gray)
}
}
}
HStack(alignment: .top) {
Text(landmark.park)
.font(caption)
Spacer()
Text(landmark.state)
.font(.caption)
}
}
.padding()
Spacer()
}
.navigationBarTitle(Text(landmark.name), displayMode: .inline)
}
}
https://developer.apple.com/tutorials/swiftui/handling-user-input
Принципиально новый нескучный "декларативный" UI от компании Apple. В наличии:
* магические константы
* спагетти из замыканий
* биндинги, страшные как атомная война
* где-то внутри модная хипстерская реактивная либа
На фоне этого кошмара qml кажется вершиной инженерной мысли
0
scheduler.queue.async { [weak self] in
guard let weakself = self else {
return
}
let locations = weakself.interactor
0
enum ErrorViewHelper {
static var errorIsShown = false
static var errorView: ErrorView?
private static var errorWindow: UIWindow = {
let width = (UIApplication.shared.delegate as? AppDelegate)?.window?.frame.size.width ?? 300
let window = UIWindow(frame: CGRect(x: 0, y: 0, width: width, height: 300))
return window
}()
static func show(error: Error) {
if let error = error as? RequestError {
switch error {
case .error(description: let text):
showErrorView(error: text)
case .errorWithMeta(description: let text, meta: _):
showErrorView(error: text)
case .needAuthError:
showErrorAlert(title: nil, message: R.string.localizable.needAuthError()) {
// TODO: remove router from this class
AuthRouterImpl().showAuthPage()
AuthRouterImpl().showAuthFlowModally()
}
case .badResponse:
showErrorView(error: R.string.localizable.badResponse())
default: break
}
} else {
showErrorView(error: error.text)
}
}