יש לי אפליקציה (פיתוח שלי) שמבצעת אימות של משתמש עם שם משתמש וסיסמה, ואני רוצה להוסיף אפשרות לכניסה באמצעות טביעת אצבע או צ'יפ, העניין הוא שמדובר בטאבלטים שמותקנים בצורה ציבורית, ולכן צריך קורא חיצוני, האם מישהו מכיר משהו מתאים שעובד באנדרואיד (11/13)?
אביי
-
קורא ביומטרי/NFC חיצוני עבור אנדרואיד -
עבודה נכונה מול מסד נתונים ללקוחות נפרדים@avi-rz כתב בעבודה נכונה מול מסד נתונים ללקוחות נפרדים:
אם אני רוצה אצלי לעשות תוכנה עם אפשרות שיתוף של לוח מסוים עם משתמשים שונים, ברגע שמדובר בDB ים שונים, העסק נהיה מורכב פי כמה. טעיתי?
תלוי בנתונים ובאופי שלהם..
יש לי תוכנה שעובדת עם נתונים של רחובות וערים וכדו', ורציתי שזה יהיה משותף לכלל המשתמשים, אז הפרדתי את הנתונים הללו מהdb הרגיל, ויצרתי db משותף לדברים הללו..
אבל אתה צודק שאם צריך אינטראקציה בין הנתונים הללו לנתונים של המשתמש אז זה עשוי להיות חגיגה, כנראה שבדיוק בשביל זה אומרים שצריך לתכנן את הdb מראש

-
עבודה נכונה מול מסד נתונים ללקוחות נפרדים@avi-rz כתב בעבודה נכונה מול מסד נתונים ללקוחות נפרדים:
באמת כל אפליקציה שנותנת שירות אפי' בנסיון חינם, מייצרת מסד חדש ללקוח,
בעצם גוגל על כל תיבת מייל פותחת מסד נתונים, או trello ושאר ירקות גם?אני חושב שזה הדוגמה הכי חזקה למה ש@dovid כתב בהתחלה, גימייל הוא מוצר אחד שגוגל מספקת להרבה משתמשים, אז הגיוני שהכל יישב במסד אחד (ואני לא שולל שבחשבונות עסקיים זה לא משהו נפרד.. באופיס הענן של מיקרוסופט, ניתן לראות במוחש (בצורה שבה מאורגנים הדברים, בעיקר במסוף האדמין) שכל "ארגון" יושב בנפרד, ויש את הארגון הכללי שמיקרסופט מספקת בנפרד), משא"כ בנידון של פותח האשכול, ששם משמע שזה תוכנה שהוא מספק אותה כיחידה לכל לקוח, אבל חלק מהעניין זה שהוא מספק גם את השרתים וכו', ואז אין באמת סיבה לערב בין הדברים...
כעת קראתי שוב את מה שכתבתי למעלה, וראיתי שלא ציינתי שככה עשיתי בפרויקט אחד, אבל בשאר הפרויקטים, עשיתי פשוט מסד נתונים נפרד לכל משתמש/מופע.
לגבי עניין הגיבויים, אז אצלי יחד עם הפונקציות שיוצרות את מסד הנתונים והטבלאות, יש גם פונקציה שמבצעת גיבוי מלא של הdb, וכך כל מופע דואג לגיבוי של עצמו, ואני מנהל את השמירה שלהם בענן בדיוק כמו שהייתי מנהל שמירת גיבויים של db יחיד.
לגבי השידרוגים ושינויים בdb, התרגלתי שלא להריץ שאילתה ידנית, אלא יש לי פונקציה שבה אני מוסיף את השינויים, וככה זה מוגדר בקלות לכל הdb.
-
עבודה נכונה מול מסד נתונים ללקוחות נפרדים@מוטי-מן אני עשיתי ככה באחד מהפרויקטים שלי, ובשביל אבטחת מידע הוספתי מלבד הבדיקות המחמירות על הAPI שניגש לdb, גם פונקציה שבודקת את כל הנתונים שנשלחים ומוודאת שהם אכן שייכים ללקוח הרלוונטי.
גם עשיתי אפשרות למשתמש להכניס תוכנה שרת אחר למסד הנתונים, ככה שאם זה חשוב לו, הוא תמיד יכול להגדיר שרת פרטי שלו כשרת מסד הנתונים.
אני לא יודע האם זה הדרך התקנית, אבל נראה שזה דרך מקובלת לחלוטין
-
אנידסק - 'מזהה' זהה במספר מחשבים@mekev מעניין מה יקרה אם ננסה ליצור 2 סשנים כשהתוכנה פועלת בחזית ב2 מחשבים...
-
הפקת דוחו"ת מWPF מה מומלץ?@dovid @pcinfogmach יש לכם המלצות קונקרטיות על ספריות לעבודה מול הhtml בשביל זה? ואיך אני טוען אותו לתצוגה בתוך התוכנה בפקד WebBrowser?
-
שאלה: איך יוצרים תוכנה שלא תזוהה כוירוס@pcinfogmach כמו ש@dovid כתב בדוטנט כמעט ולא נתקלתי בזה, כן נתקלתי בזה בקבצי פייתון שמהודרים לexe עם pyinstaller, שגוגל דרייב היה משדע אותי (ובעיקר את הנמענים)
אבל יש יהודי שפיתח תוכנה שמחתימה את התוכנה בשמך, שזה מנסיוני הקצר (יומיים) סותם לגוגל דרייב את הפה.
https://mitmachim.top/post/728160הורדה מכאן https://n.zelaze.ovh/s/gxkHDP2nFHtY65J/download/נחתום בטבעת המלך - מכון כתר תורה.exe
קוד נגדי מבקשים ממנו באימייל.
עריכה: רק כעת ראיתי שכבר @דאציג הביא לינק לתוכנה, @dovid לי התוכנה הזו פתרה את הבעיה של @pcinfogmach.
-
הפקת דוחו"ת מWPF מה מומלץ?@Mordechai-0 כתב בהפקת דוחו"ת מWPF מה מומלץ?:
אני משתמש בfastreport(.frx) לדעתי זה הכי קל והכי טוב
יש לך לינק להסבר על איך מתחילים לעבוד עם זה בתוך התוכנה?
-
הצגת מסמכי pdf ב-.net - כל המידע שאספתי בנושא@pcinfogmach האם ניסית את זה?
https://help.syncfusion.com/wpf/pdf-viewer/overview
אני אישית לא התנסיתי, אבל מהפקדים האחרים שלהם יצאתי די מאושר, וכל שאלה בפורום התמיכה נענית תוך יום בד"כ ע"י אחד מצוות התמיכה, שמביא גם דוגמה והסבר, כמו"כ באגים מטופלים מיידית (ואתה מקבל dll מעודכן עוד לפני העדכון השבועי של החבילות) כמובן שזה נשמע בתשלום, אבל יש רישיון קהילתי חינמי לשימוש מסחרי כל עוד אתה לא יותר מ10 עובדים בחברה בסך הכולל ולא עובר את המחזור של 3 מיליון בשנה...
רק אזהרה, שאל תתקין את הפקדים מתוכנת מנהל הפקדים שלהם אלא רק מה שאתה צריך מנוגט, אחרת אתה תלך לאיבוד ברשימת הפקדים שתתווסף לך בטולבוקס.
-
מיקום שמירת קבצי תוכנה@אף-אחד-3 כתב במיקום שמירת קבצי תוכנה:
לא נראה לי שזאת הדרך לעשות את זה אבל אפשר לשים את זה בתיקייה של המשתמש public
אכן, זה מה שעשיתי בינתיים,
@dovid כתב במיקום שמירת קבצי תוכנה:
אני חושב ממה שכתבת שאתה יכול בProgramData ולשנות את ההרשאות בזמן יצירה, לא כך?
אני לא בטוח כי אני משתמש במתקין של inno צריך לבדוק אם יש שם אפשרות כזו
@mekev כתב במיקום שמירת קבצי תוכנה:
תגדיר אותו (מאפיינים>תאימות) 'הפעל כמנהל מערכת'
אבל אני רוצה שהתוכנה לא תרוץ כמנהל, שגם משתמש רגיל יוכל להשתמש בה..
לסיכום, נראה שאין מיקום ייעודי לקבצי דאטה של תוכנה שמשותפים לכלל המשתמשים...
-
מיקום שמירת קבצי תוכנהבוקר טוב,
אני כותב כעת תוכנה כלשהי שקוראת וכותבת נתונים לdb של sqlite שמאוחסן במחשב,
העניין הוא שאת הקבצים של התוכנה עצמה אני מאחסן בProgram Files, וא"א לכתוב לשם בהפעלת התוכנה במצב רגיל (היינו לא כמנהל), וביותר שבסופו של דבר אני מעוניין לאפשר לתוכנה לעבוד אצל כל המשתמשים עם אותו דאטה, האם יש מיקום כלשהו שמקובל לאחסן בו את קבצי נתונים של התוכנה שמתאים לצורך הזה? (ניסיתי בפרוגרם דאטה אבל מסתבר שרק המשתמש שיצר את הקובץ מקבל הרשאת כתיבה)
-
כיצד להגדיר לתוכנה לפעול תמיד בקנ"מ של 100%?בWPF כיצד אני יכול להגדיר לתוכנה לפעול תמיד בקנ"מ של תצוגה 100% גם כשהמחשב מוגדר אחרת (125/150 בניידים עם צגים קטנים) בלי לשנות את הגדרות המערכת או בכל מחשב באופן ספציפי?
אני מתכוון באמצעות הגדרה בתוכנה/מניפסט.
ראיתי את זה אבל זה לא עובד לי (או שלא הגדרתי נכון)
-
בניית אתר מעוצב -
הפקת דוחו"ת מWPF מה מומלץ?@יהודי-טוב כתב בהפקת דוחו"ת מWPF מה מומלץ?:
למה לא עם rdlc?
אתה מכיר לינק טוב להסבר על תחילת העבודה עם RDLC? (עדיף בעברית, לא חובה)
-
הפקת דוחו"ת מWPF מה מומלץ?אני צריך לייצא (להדפיס/pdf) דוחו"ת של נתונים בעיקר טבלאיים מהתוכנה, מהי הדרך הנכונה לעשות את זה?
האם עיצוב של חלון בxaml והדפסה שלו כדו"ח זה טוב או רע?
אני חשבתי על עיצוב הדוחו"ת ב Page.xaml וליצור Window שאליו אני אטען בכל פעם את הPage הרלוונטי, ועל הWindow אני אעשה את הקוד לשמירה והדפסה וכדו'
.
נ.ב. בדרך הזו אני לכאורה מרוויח שאני יכול ליצור דוחו"ת להדפסה החוצה, אבל שכל עוד הם בתוכנה הם דינאמיים ואינטראקטיביים, מגיבים ללחיצות וכו', כי חלק מהדוחו"ת אמורים להיות מוזנים אח"כ חזרה לתוכנה עם תיקונים ותוספות, ואני חשבתי ליצור לכל דו"ח מזהה ייחודי שיהיה מורכב מסדרת מספרים בפורמט מסויים, שהתוכנה תזהה באיזה סוג דו"ח מדובר ומהם הפרמטרים ששימשו להפקתו, ותוכל להציג אותו מחדש לעדכון מהיר ונח, אף שלא נשמר עותק אמיתי בתוכנה.
-
עזרה במציאת ספריה/framework לעיצוב גרפי (gui) ב python@Mordechay אולי זה https://kivy.org/
-
טעינה איטית של נתונים לSfDataGrid של syncfusion בwpfעדכון.
לאחר שפניתי לתמיכה של syncfusion והוברר שאין כל בעיה בקוד וכו', הם זרקו לי משפט שאולי עשיתי התאמות אישיות כלשהם, ולאחר בדיקה התברר שהשורה הזו בapp.xaml היא זו שדפקה את העסק:
<ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="Views/Styles/Scrollbar.xaml" /> </ResourceDictionary.MergedDictionaries>זה קוד שמצאתי ברשת לעיצוב פס הגלילה, רציתי להצר אותו כי הוא תפס לי מקום באחד הטפסים..
אני לא כ"כ מבין בxaml כך שאיני יודע להצביע על הבעיה עצמה
Scrollbar.xaml<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <SolidColorBrush x:Key="StandardBorderBrush" Color="#888" /> <SolidColorBrush x:Key="StandardBackgroundBrush" Color="Black" /> <SolidColorBrush x:Key="HoverBorderBrush" Color="#DDD" /> <SolidColorBrush x:Key="SelectedBackgroundBrush" Color="Gray" /> <SolidColorBrush x:Key="SelectedForegroundBrush" Color="White" /> <SolidColorBrush x:Key="DisabledForegroundBrush" Color="#888" /> <SolidColorBrush x:Key="GlyphBrush" Color="#444" /> <SolidColorBrush x:Key="NormalBrush" Color="#888" /> <SolidColorBrush x:Key="NormalBorderBrush" Color="#888" /> <SolidColorBrush x:Key="HorizontalNormalBrush" Color="#FF070AC8" /> <SolidColorBrush x:Key="HorizontalNormalBorderBrush" Color="#888" /> <Style x:Key="ScrollBarLineButton" TargetType="{x:Type RepeatButton}"> <Setter Property="Visibility" Value="Hidden" /> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="OverridesDefaultStyle" Value="true" /> <Setter Property="Focusable" Value="false" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type RepeatButton}"> <Border Name="Border" Margin="1" CornerRadius="2" Background="{StaticResource NormalBrush}" BorderBrush="{StaticResource NormalBorderBrush}" BorderThickness="1"> <Path HorizontalAlignment="Center" VerticalAlignment="Center" Fill="{StaticResource GlyphBrush}" Data="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}" /> </Border> <ControlTemplate.Triggers> <Trigger Property="IsPressed" Value="true"> <Setter TargetName="Border" Property="Background" Value="{StaticResource PressedBrush}" /> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style x:Key="ScrollBarPageButton" TargetType="{x:Type RepeatButton}"> <Setter Property="Visibility" Value="Hidden" /> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="OverridesDefaultStyle" Value="true" /> <Setter Property="IsTabStop" Value="false" /> <Setter Property="Focusable" Value="false" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type RepeatButton}"> <Border Background="Black" /> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style x:Key="ScrollBarThumb" TargetType="{x:Type Thumb}"> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="OverridesDefaultStyle" Value="true" /> <Setter Property="IsTabStop" Value="false" /> <Setter Property="Focusable" Value="false" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Thumb}"> <Border CornerRadius="4" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0" Width="8" Margin="8,0,-2,0" /> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style x:Key="ScrollBarThumbHor" TargetType="{x:Type Thumb}"> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="OverridesDefaultStyle" Value="true" /> <Setter Property="IsTabStop" Value="false" /> <Setter Property="Focusable" Value="false" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Thumb}"> <Border CornerRadius="4" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0" Height="8" Margin="0,0,-2,0" /> </ControlTemplate> </Setter.Value> </Setter> </Style> <ControlTemplate x:Key="VerticalScrollBar" TargetType="{x:Type ScrollBar}"> <Grid> <Grid.RowDefinitions> <RowDefinition MaxHeight="0" /> <RowDefinition Height="0.00001*" /> <RowDefinition MaxHeight="0" /> </Grid.RowDefinitions> <Border Grid.RowSpan="3" CornerRadius="2" Background="Transparent" /> <RepeatButton Grid.Row="0" Style="{StaticResource ScrollBarLineButton}" Height="18" Command="ScrollBar.LineUpCommand" Content="M 0 4 L 8 4 L 4 0 Z" /> <Track Name="PART_Track" Grid.Row="1" IsDirectionReversed="true"> <Track.DecreaseRepeatButton> <RepeatButton Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageUpCommand" /> </Track.DecreaseRepeatButton> <Track.Thumb> <Thumb Style="{StaticResource ScrollBarThumb}" Margin="1,0,1,0" Background="{StaticResource HorizontalNormalBrush}" BorderBrush="{StaticResource HorizontalNormalBorderBrush}" /> </Track.Thumb> <Track.IncreaseRepeatButton> <RepeatButton Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageDownCommand" /> </Track.IncreaseRepeatButton> </Track> <RepeatButton Grid.Row="3" Style="{StaticResource ScrollBarLineButton}" Height="18" Command="ScrollBar.LineDownCommand" Content="M 0 0 L 4 4 L 8 0 Z" /> </Grid> </ControlTemplate> <ControlTemplate x:Key="HorizontalScrollBar" TargetType="{x:Type ScrollBar}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="0" /> <ColumnDefinition Width="0.00001*" /> <ColumnDefinition Width="0" /> </Grid.ColumnDefinitions> <Border Grid.ColumnSpan="3" CornerRadius="3" Background="Transparent" /> <RepeatButton Grid.Column="0" Style="{StaticResource ScrollBarLineButton}" Width="18" Command="ScrollBar.LineLeftCommand" Content="M 4 0 L 4 8 L 0 4 Z" /> <Track Name="PART_Track" Grid.Column="1" IsDirectionReversed="False"> <Track.DecreaseRepeatButton> <RepeatButton Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageLeftCommand" /> </Track.DecreaseRepeatButton> <Track.Thumb> <Thumb Style="{StaticResource ScrollBarThumbHor}" Margin="0,1,0,1" Background="{StaticResource HorizontalNormalBrush}" BorderBrush="{StaticResource HorizontalNormalBorderBrush}" /> </Track.Thumb> <Track.IncreaseRepeatButton> <RepeatButton Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageRightCommand" /> </Track.IncreaseRepeatButton> </Track> <RepeatButton Grid.Column="3" Style="{StaticResource ScrollBarLineButton}" Width="18" Command="ScrollBar.LineRightCommand" Content="M 0 0 L 4 4 L 0 8 Z" /> </Grid> </ControlTemplate> <Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}"> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="OverridesDefaultStyle" Value="true" /> <Style.Triggers> <Trigger Property="Orientation" Value="Horizontal"> <Setter Property="Width" Value="Auto" /> <Setter Property="Height" Value="12" /> <Setter Property="Template" Value="{StaticResource HorizontalScrollBar}" /> </Trigger> <Trigger Property="Orientation" Value="Vertical"> <Setter Property="Width" Value="18" /> <Setter Property="Height" Value="Auto" /> <Setter Property="Template" Value="{StaticResource VerticalScrollBar}" /> </Trigger> </Style.Triggers> </Style> <Style x:Key="FavsScrollViewer" TargetType="{x:Type ScrollViewer}"> <Setter Property="OverridesDefaultStyle" Value="True" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ScrollViewer}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <ScrollContentPresenter Grid.Column="1" /> <ScrollBar Name="PART_VerticalScrollBar" Value="{TemplateBinding VerticalOffset}" Maximum="{TemplateBinding ScrollableHeight}" ViewportSize="{TemplateBinding ViewportHeight}" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" /> <ScrollBar Name="PART_HorizontalScrollBar" Orientation="Horizontal" Grid.Row="1" Grid.Column="1" Value="{TemplateBinding HorizontalOffset}" Maximum="{TemplateBinding ScrollableWidth}" ViewportSize="{TemplateBinding ViewportWidth}" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" /> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style TargetType="{x:Type ScrollViewer}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ScrollViewer}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <ScrollContentPresenter Grid.Column="0" /> <ScrollBar x:Name="PART_VerticalScrollBar" Grid.Row="0" Grid.Column="1" Value="{TemplateBinding VerticalOffset}" Maximum="{TemplateBinding ScrollableHeight}" ViewportSize="{TemplateBinding ViewportHeight}" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" /> <ScrollBar x:Name="PART_HorizontalScrollBar" Orientation="Horizontal" Grid.Row="1" Grid.Column="0" Value="{TemplateBinding HorizontalOffset}" Maximum="{TemplateBinding ScrollableWidth}" ViewportSize="{TemplateBinding ViewportWidth}" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" /> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> </ResourceDictionary> -
עזרה במציאת ספריה/framework לעיצוב גרפי (gui) ב python@Mordechay יש לך את האתר הזה ל לtkinter
https://visualtk.com/ובלינק הזה שהבאתי למעלה, יש תוכנה לעיצוב עובר qt
https://build-system.fman.io/qt-designer-downloadהאמת שיש גם את זה, מעצב עם figma (לא ניסיתי)
https://github.com/ParthJadhav/Tkinter-Designer -
טעינה איטית של נתונים לSfDataGrid של syncfusion בwpf@צדיק-תמים זה לא עוזר, הם מדברים על חלוקה לעמודים, אני רוצה גלילה אינסופית, לא אכפת לי שיטען שורה שורה...
-
לוח שנה נפתח בגוגל שיטס