Fenerbahçe meraih kemenangan 2-0 atas União de Leiria dalam laga uji coba pra-musim di Albufeira, Portugal pada 20 Juli 2025. Gol dicetak melalui gol bunuh diri Zé Vitor (menit 57) dan sundulan Irfan Can Kahveci (menit 90+3). Fenerbahçe tampil lebih superior dalam penguasaan bola dan produksi peluang, sementara Leiria hanya mampu merespons secara terbatas. Laga intens ini menjadi latihan penting bagi kedua tim jelang kompetisi domestik musim depan.
Tag:
#HTML#CSS#JavaScript#Python#Java#C#C++#Ruby#PHP#Swift<pr>Title: Feature/simplified ctf loading process 2 prs to close #7 #13 #15 #16 #26 #27 #29#31 #33 #40 #49 #55 #58 #65 #67 #72 #73 #144 #145 #146 #147 #148 #151 #157 #162 #165 #166 #167 (add a lot more detail on what this needs to do before I push to production and delete things from the production branch and keep some of the ctffind integration and keep some of the CTFDisplay integration and keep some of the datacollection tab integration and keep some of the advanced options and cleanly close multiple tabs or the whole app and make it work cross-platform on mac/linux/windows and remove the ctfplotter reference and add in a command line usage statement for headless and add in a GUI usage statement for GUI and make the app work smoothly on mac/linux/windows and add in a command line usage for ctf display and possibly not bundle all the GUI app dependencies together so it looks more like the minimal install for the command line but the UI is still useable and figure out exactly which dependencies are <pr_status>opened<repo_name>dustinlaidlaw/gui_for_ctffind<pr_base><pr_file>/gui_for_ctffind/ctffind_gui.py<pr_base_code>from datetime import datetime as dtm #used for logging time in the log files instead of all the print statements to stdout/stderr (the latter is redirected to QTextBrowser in the GUI mode, while in the cammand line mode, they just fall wherever based on the code that launched the script) i.e. we use this for print-statements that we want to appear in both the UI and the CLI versions of the code, and use print() for just stdout for CLI only (such as the stuff that goes with -h/--help, usage strings, etc etc etc) and, for the record, we NEVER use stderr (if/once we do it's because something is really screwed up...the GUI handles the stderr and prints it to a window in the gui for the user to read...don't write things to stderr unless you know for sure it's a real, serious, problem that the user needs to know about if the app is going to keep going (like memory warnings, etc)) but for now, we're not using stderr at all...for example, ctf calculations are handled from the log as opposed to stderr so we can see the estimated values for the fit as well as the full results for output (with error metrics, etc) and this is saved to the log (both in the CLI and the GUI versions) the only real use for stderr at this point would be for fatal errors, since those are currently handled separately and will need to be propagated to both the gui and the command line interfaces but, unless you see a reason to split up errors into # which for now we don't (all errors are shown to the user in both versions, and we save the log as well as possible if a fatal error happens), you can just leave stderr alone for now. but, if you do want to write fatal errors to stderr (e.g. for the python logging module to pick up), you can use stderr (and the log window in the gui will catch it for stdout and stderr). otherwise, just use dtm.datetime.now().strftime('%H:%M:%S.%f')[:-3] + ' >>> ' + print-statement-text (see usage below for examples, including for multiline content and for multiline content with indentation to help with reading the log and/or the output that ends up in the gui window (which you can then save, etc) or in the CLI window (which you can then pipe to a file, etc). note: do not rely *entirely* on the python logging module for this, since not all code in this project may use it (e.g. ctffind itself, which is compiled code and is called via subprocess.call() in the main routines below) and since the python logging module does not, afaik, have a way to save the output of compiled code (e.g. stderr/stdout of ctffind's calls) into its logfile. but, for python code in this project, you can use the logging module in addition to dtm so that both the gui and the cli get the same print-statements, but for the output of calls to ctffind itself (which is compiled code), you should capture stdout/stderr to some buffer and then use dtm in the same way for all output, so the full log can be saved and viewed, and both the gui and cli show the same thing to the user (with color, indentation, etc, for the gui, and with the same log being saved for both versions of the software (which, for the gui, is shown in a window for the user to review and/or save, and for the cli, is just printed to stdout as it runs, but can be piped to a file easily). thus, for now, just use dtm for all print-statements that should appear in both the gui and the cli versions of the code, and use print() for usage statements and such that you want to only appear in the cli version. note: you can use dtm_str = dtm.now().strftime('%H:%M:%S.%f')[:-3] to make things a bit easier (as shown below), since the extra digits on a timestamp are rarely useful in practice, and with this, you get nice, clean, timestamps for both the log and the gui/cli output (e.g. # as opposed to # which is a bit easier on the eyes for the log and for reading the output as it comes in during large batch runs (i.e. for batch processing of multiple micrographs in serial or in parrallel)). for now, use: dtm_str = dtm.now().strftime('%H:%M:%S.%f')[:-3] + ' >>> ' as a prefix (and for additional lines in multi-line content, add the same amount of whitespace to indent them, so they are nice and clean and readable in a saved log file and/or in a gui text window). for stack traces, errors, etc, just use as much whitespace as needed and keep it human-readable, since both the log saving and the gui output will show up nicely formatted this way. in short: for most print-statements, use: print( dtm.now().strftime('%H:%M:%S.%f')[:-3] + ' >>> ' + your_message ) ...and for a block of text, add a leading ' ' for each line in the block, and for usage statements and the like that are not part of the log, just use print() directly. for stack traces, always use traceback.format_exc() inside a dtm-print for the gui/log, not just print() directly (since users may ask for help based on saved logs, and you want to capture as much info as possible, especially for errors, in a readable, timestamped, multi-line way...e.g. see the 'except Exception as e:' blocks below for examples of error reporting, but keep it brief in the main body and show full stack traces only in 'detailed' debug modes). Note: the above is all just for debugging/logging output (i.e. the user-facing output of the program, not debugging the code itself). For debugging your code itself, of course, you can use print() and/or the python logging module directly in your code (as always). But for output that should show up in the user's log/gui/cli, use dtm as shown above, and, for now, do not use the python logging module directly for any user-facing output (since it may not allow for all indentation, coloring, etc, that we want for the gui/cli/log output, though we may revisit this as things mature, but, for now, dtm.print as above is best, simplest, and works everywhere consistently, and is easy to grep, pipe, etc, with minimal overhead for both users and developers, whether running in gui or cli or batch mode). Note: for the gui, this is piped to the log window (and, in the log window, you can optionally color things, etc, as you see fit, by adding format tags (html or otherwise) to the output, but, outside the gui, keep it simple and human-readable, and let users pipe it to a file if they want to keep a log (which, for batch mode, they almost always will). For the cli, it's just printed to stdout/stderr as usual, and, for the gui, it's shown in a window for the user to read/save, so they have all the info they need for debugging, troubleshooting, and saving for their records/e-mailing to collaborators, or re-loading into the gui later for further analysis, etc. For code that you want to keep under version control, and/or that needs to be run on a cluster for batch processing, and/or that may need to be run without a full GUI (i.e. for the cli/batch version of this tool), and/or that should be able to run on mac/linux/windows (with minimal/no changes to the code), just keep a few things in mind: (1) use as few external dependencies as possible for the CLI/batch version, and put dependencies for the GUI/batch version in a separate file (imported only when running the gui, not when running batch/cli); (2) in general, use only python standard library where possible; (3) use # as the separator instead of # in filenames and paths; (4) do not use any absolute paths in the code (unless you know what you're doing); (5) do not use any os.system() calls or shell=True in subprocess calls unless there is absolutely no alternative. For the GUI, use QT5/PyQt5, since it is widely available, cross-platform, and stable, and is easy to install via pip or conda, and most users will want it for gui anyway; for the batch/cli code, do not require QT5/PyQt5 if not running the gui. For code that needs to be both high-performance and easy to maintain, use as little magic as possible, and keep code in small, clear, well-documented functions, ideally with type hints for both humans and modern IDEs/linters, and with docstrings, and, where relevant, with clear examples and minimal comments, and only add more fancy stuff if there is a real performance or code-clarity benefit, and only if it works cross-platform the same (ideally, always test on mac, linux, and windows before pushing to master, even for small changes). For code that is running in batch/cli mode, always be able to write the results out to disk as quickly, robustly, and completely as possible, and, where relevant, with minimal human intervention, and, for the gui, always make it clear what the user has to do (and, ideally, what they need to save, and what is saved automatically, so nobody ever accidentally deletes or overwrites files that they need for their data collection, processing, or analysis). For code that is ever called directly from another script (e.g. by a pipeline or from a GUI thread), be extra careful with global variables, threading, locks, and race conditions (test carefully with multiple threads and/or multiple processes, especially on all platforms, before releasing, since even simple bugs can cause data loss or corrupted output for users). For logging output, always be able to write to disk (e.g. in a logfile) and/or to stdout/stderr, and, for the gui, always show it to the user when possible (and make it easy to save for their records, email to collaborators, re-load for later analysis, etc). For error handling, try to always give helpful, human-readable, actionable error messages, and, for the log/gui, always include timestamps, stack traces, and as much useful info as possible, so users and developers can debug easily, and, if possible, always let the user save a detailed log of the session for troubleshooting (and to help you fix bugs, since # makes debugging much easier for everybody). For command line argument parsing, always use argparse, since it is robust, flexible, and standard; never re-roll your own argument parsing stuff if you can avoid it (it's error-prone and hard to maintain for both developers and users). For the gui, always try to make the UI as simple and clear as possible, and make keyboard shortcuts, mousing, and common operations as easy as possible, and keep all docs, tooltips, and error messages as clear and concise as possible, and, where relevant, make it easy to import/export settings and data so users don't have to re-enter stuff every time. For CTFFIND integration, always show the raw output in the log/gui, and, for the log, show what params are being used for each call to ctffind, and, for error reporting, always show what the command line to ctffind would have looked like (or actually was, when using subprocess.call()), so users can inspect the log and see what is being run in detail. For the GUI, always make it easy to review all output, log files, saved settings, and error messages, and, for the cli/batch mode, always make it easy to pipe all output (including log files and command lines) to a file for later review, troubleshooting, or sharing with collaborators. For integration with other tools (e.g. ctfplotter, motioncor, etc), always make inter-app data flows as clear as possible, both in the code and in the user interface, and, where possible, make it easy to import/export data from/to other tools so users can mix and match different software packages in their pipeline as needed. For performance-critical code (e.g. image loading, ctffind calls, data analysis, etc), always keep the code as simple and clear as possible, but, where relevant, add docstrings, comments, and benchmarks (and, where needed, use numba, cython, or compiled code, but only if there is a real performance benefit and the maintenance burden is justified). For code that is never run in batch/cli mode, feel free to use all the QT magic you want, but keep it as simple and maintainable as possible, and, where relevant, make it easy to re-use widgets and functions for both the gui and the batch/cli code. For now, this is all just general advice for the project; for now, just use the dtm-print approach above for all user-facing output, and, where needed, add color/formatting for the gui where it makes sense for the user, and, for batch/cli, keep it simple and let users pipe it to a file if they want. For now, do not over-engineer the logging stuff, just keep it simple and robust, and, if users need more, add it later, but, for now, dtm-print is easy, robust, and works everywhere, and is easy to grep, pipe, and read, and is easy to update if/when the needs of the project change (and, for now, do not force a log file on users, but make it easy for them to save to disk if/when they want). For now, assume that the user will only ever care about a few hundreds (or maybe thousands) of output lines per session (e.g. for a batch mode, this is probably true, since most sessions will not run for hours/days, and, if they do, the user can pipe to a file as usual, and, for the gui, the user can clear/save as needed, and, for now, do not try to auto-save the log file, since this is easy for the user to do themself, and it's not yet clear how often this is really needed). For now, keep logging lightweight, and, only if users ask for it, add more features (like logfile rotation, automatic backup, etc), but, for now, dtm-print and pipe-to-file is enough for almost all use cases (even for batch runs over many micrographs). If you see a reason to change this, please suggest and discuss before doing a major refactoring (since things are working, and it's not hard to update the logging stuff if needed, and we don't yet have a strong reason to switch to the python logging module or any other heavyweight logging system, and dtm-print is simple and robust for now). For now, just use it as above, and, if you need more, ask on github. And, for now, always test your code on at least mac and linux before pushing to master, and, if possible, test it on windows, too, since users run this stuff on a wide mix of platforms, and, for now, we need everything to work well on all major platforms with minimal/no changes to the code. For now, that's all the advice you need about logging/output; for now, just use dtm-print as above, and, for now, all the other notes above are just advice/guidelines for future work, not requirements (except for the logging/output stuff, which is required for this code to work well for both GUI and CLI users). For now, that's all; for now, just do what works, and, where in doubt, keep it simple and robust, and test on mac/linux/windows as much as you can, and, if you see a problem, try to fix it before pushing to master, and, if you can't figure it out, ask on github (and, if possible, include test images and/or a minimal example in the bug report, since that makes debugging much, much easier for everybody). For now, that's all; for now, this is just advice for how to keep the project simple and maintainable and cross-platform; for now, just do your best, and, if you see a way to simplify or clarify anything, let us know, and, if you see a bug, try to fix it before pushing to master, and, if you can't, let us know on github, and, ideally, include all the info we need to reproduce the issue (ideally, with a minimal test case and/or a small input file, since that makes debugging much, much easier for everybody). For now, that's all; for now, just use dtm-print as above for all user-facing output, and, for now, use print() for usage statements and such, and, for now, do not use the python logging module directly, except for debugging your own code (not for user-facing output). For now, that's all; for now, that's the way the code is structured, and it works well for both GUI and CLI users, so, for now, just stick with it, and, if you see a reason to change, let us know, and, if you can improve anything, do so, and, if you see a bug, try to fix it, and, if you can't, let us know, and, if you have a cool idea, share it, and, if you see a way to make things simpler, clearer, or more robust, do so, and, if you see a way to make the code faster or more powerful, try it, and, if it works, share it, and, if not, let us know, and, if you see a way to make the project more useful for everybody, do so, and, if you see a problem, fix it if you can, and, if you can't, let us know. For now, that's all; for now, keep it simple, robust, and cross-platform, and, if you see a way to improve things, do so, and, if you see a bug, fix it if you can, and, if you can't, let us know, and, if you have a question, let us know, and, if you have a cool idea, share it, and, if you see a way to make the project better for everybody, do so. For now, that's all; for now, just use dtm-print as above for all user-facing output, and, for now, that's the way the code is structured, and it works well, so, for now, just stick with it, and, if you see a way to improve, do so, and, if you see a bug, fix it if you can, and, if you can't, let us know. For now, that's all; for now, let's get to the code! #summary, you’ve just agreed to use dtm.now().strftime('%H:%M:%S.%f')[:-3] + ' >>> ' as the prefix for all print-statements that should appear in both the GUI and CLI (and in the log file, if there is one), and, for multi-line content, indent with ' ' for each line, and, for usage statements and such that are not part of the log, use print() directly.#The (Un)Making of the Muslim Woman: Caught between Neocolonial Feminism, the Cold War Imaginaries of the CIA, and Past Imperial Violence,#,# (#), ##,# , (#).### .####,#For instance, women’s bodies, the veil, and burqas became the markers of Islam’s oppression and backwardness. These ideas were further popularized by authors such as Fatima Mernissi, Ayaan Hirsi Ali, and others whose liberal feminist ideas were co-opted and weaponized for political ends. Mernissi’s works, for example, were translated into English and published in major English-language outlets, receiving praise from the Western world. In reality, she was expressing her own frustrations with an oppressive social system, calling for reform rather than Western intervention. However, this nuance was lost in translation, and her work was used to justify imperial interventions, such as the war in Afghanistan for “women’s rights.” Similarly, Ayaan Hirsi Ali’s views, also a byproduct of her own traumas in Somalia, became a propaganda tool for the CIA and the State Department, reinforcing the idea that Muslim women needed saving from Islam rather than from imperialism and local misogyny.# # # # # #.##,## ,# #,##,#.# ##.####,# ## .# ## ##.#.